Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 31.07.2009
Сообщений: 40

Поиск алгоритма нахождения наилучшего результата

14.03.2016, 12:42. Показов 934. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано:
N-ое кол-во таблиц. При объединении трех создается новая таблица (пример ниже)

1 1 1 1 + 1 1 1 0 + 1 0 0 0 = 2 1 1 1
1 0 1 0 + 1 0 1 0 + 1 0 0 0 = 1 0 1 0
0 0 0 0 + 1 0 1 0 + 0 0 0 0 = ? ? ? ?

Как вы заметили:
При одинаковых значениях в трех исходных таблицах значение в результирующей повышается
При одинаковых значениях в двух исходных таблицах значение не меняется
При несовпадении в ряде значения становятся неопределенные.

Вопрос: Каким способом перебрать всё N-ое кол-во таблиц, чтобы в результате получить максимально возможное, допустим
8 8 8 8
8 8 8 8
8 8 8 8
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.03.2016, 12:42
Ответы с готовыми решениями:

Доказательство результата алгоритма
Подскажите, пожалуйста, как в общем случае доказывается результат алгоритма? Например, в данном случае очевидно, что данный алгоритм...

Блок-схема для алгоритма нахождения факториала введенного числа
Здравствуйте очень нужна помощь,готовлюсь к сесии,а как блок схему составить не могу понять в этой программе,а сессия уже в пятницу ...

Реализовать блок схему алгоритма нахождения суммы наибольшего числа из 4 заданных
нужно сделать блок схему алгоритма нахождения суммы наибольшего числа из 4 заданных. кто сможет нарисовать?

17
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
14.03.2016, 14:12
Цитата Сообщение от Sahamar Посмотреть сообщение
Как вы заметили:
При одинаковых значениях в трех исходных таблицах значение в результирующей повышается
При одинаковых значениях в двух исходных таблицах значение не меняется
При несовпадении в ряде значения становятся неопределенные.
Не выполняется.
Например,
во второй строке второй элемент одинаковый во всех трёх таблицах, и он не изменился,
а в третей строке второй элемент одинаковый во всех трёх таблицах, и он стал неопределённым.
0
1 / 1 / 0
Регистрация: 31.07.2009
Сообщений: 40
14.03.2016, 15:19  [ТС]
Прошу прощение, упустил если 0(ноль) то это признак отсутствия, то есть исключение из правил.

Добавлено через 2 минуты
да и ошибка во второй строке
1 0 1 0 + 1 0 1 0 + 1 0 0 0 = 2 0 1 0
0
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
14.03.2016, 15:34
Цитата Сообщение от Sahamar Посмотреть сообщение
Прошу прощение, упустил если 0(ноль) то это признак отсутствия, то есть исключение из правил.
Почему тогда во второй строке тоже 3 раза ноль, но результат тоже ноль ?
Внимательно посмотрите свою задачу и опишите все имеющиеся правила.

Добавлено через 4 минуты
Цитата Сообщение от Sahamar Посмотреть сообщение
Вопрос: Каким способом перебрать всё N-ое кол-во таблиц, чтобы в результате получить максимально возможное, допустим
Опиши функцию оценки матрицы на "максимальность". Какую именно матрицу требуется найти? Где один из элементов самый большой среди всех таких матриц? Где максимальная сумма не неопределенных элементов?
0
1 / 1 / 0
Регистрация: 31.07.2009
Сообщений: 40
14.03.2016, 16:04  [ТС]
В том то и дело, что матрица не известна, так как в будущем при объединении именно она может дать желаемый результат. N-ое кол-во матриц неизвестное. Может 10 может 500.
Разумеется можно отсечь матрицы со случайными результатами, но пренебрегать остальными нельзя.
Нужен перебор всех возможных вариантов с i-ой итерацией которая даст матрицу без нулей с максимальным значением при сложении всех значений в матрице.
Правило сложение при трех значений в j-ом элементе дает (a+b+c)/3 = итог с округлением вниз
то есть (5+1+2)/3 = 2
Правило сложения при двух значениях в j-ом элементе дает (a+b)/2 = итог с округлением вниз
то есть (5+4)/2 = 4 или (5+2)/2=3
При условии если 2 0 0 3 + 1 1 0 0 + 0 0 1 0 = j1 = 1, а j2 или j3 или j4 = (3+1+1)/3 =1
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
14.03.2016, 16:37
Цитата Сообщение от Sahamar Посмотреть сообщение
Правило сложение при трех значений в j-ом элементе
когда применяется это правило и что такое "j-ый элемент"?

Добавлено через 6 минут
Вы можете аккуратно написать
что дано
что надо найти
правила для всех операций
0
1 / 1 / 0
Регистрация: 31.07.2009
Сообщений: 40
14.03.2016, 17:21  [ТС]
Дано:
n-ое кол-во матриц int[12] где i-ый элемент матрицы имеет значение от 0 до 8
Для получения новой матрицы-P нужно использовать 3 из существующих.
Останется N-3+1 (28 матриц - 3 матрицы + 1 матрица), но проблема в том, что полученная матрица может не подойти при сложении на n-ом шаге.
В идеале при 9 имеющих матрицах нам потребуется всего 3 шага 9-3+1=7-3+1=5-3+1=3-3+1=1 Итоговая матрица.
Правило сложения матриц элементов матрицы:
0 + 0 + 0 = 0
1 + 1 + 1 = 2
1 + 2 + 2 = 2
2 + 2 + 2 = 3
и тд.
Матрица условна разделена на 3 строки по 4 элемента
1 0 0 0 + 0 0 0 1 + 0 1 0 0 = Получим случайный элемент элемент со значением 2 (1+1+1=2)
2 1 0 0 + 2 1 0 0 + 0 0 0 0 = 2 1 0 0
2 1 1 1 + 2 1 1 1 + 0 0 0 0 = 2 1 1 1
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
14.03.2016, 18:41
Цитата Сообщение от Sahamar Посмотреть сообщение
1 0 0 0 + 0 0 0 1 + 0 1 0 0 = Получим случайный элемент элемент со значением 2 (1+1+1=2)
Не понял.
1. Почему 1 + 1 + 1 = 2?
2. Если результат сложения зависит от случайности, то как мы можем гарантировать лучший результат (вдруг нам не повезёт)?
3. Остальные 3 элемента?

Цитата Сообщение от Sahamar Посмотреть сообщение
Правило сложения матриц элементов матрицы:
0 + 0 + 0 = 0
1 + 1 + 1 = 2
1 + 2 + 2 = 2
2 + 2 + 2 = 3
Много вопросов:
0 + 0 + 1 = ?
1 + 1 + 7 = ?
8 + 8 + 8 = ?
и так далее...
0
1 / 1 / 0
Регистрация: 31.07.2009
Сообщений: 40
15.03.2016, 09:05  [ТС]
Вопрос не в том как сложить 3 матрицы, а уйти от миллиардов вариантов и не использовать исключения). Нужно найти кратчайший путь получения максимально возможной матрицы в идеале
8 8 8 8
8 8 8 8
8 8 8 8
0 + 0 + 1 = (1/3 с округлением в меньшую сторону)+1
1 + 1 + 7 = (9/3 с округлением в меньшую сторону)+1
8 + 8 + 8 = (24/3 с округлением в меньшую сторону)+1
1. Почему 1 + 1 + 1 = 2? (3/3)+1
2. Если результат сложения зависит от случайности, то как мы можем гарантировать лучший результат (вдруг нам не повезёт)? Случайность только в выборе элемента строки.
3. Остальные 3 элемента?
Согласен, что "случайные" матрицы исключаются из подбора.
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
15.03.2016, 09:17
При каких условиях результат сложения становится случайным? Как выглядит "случайный результат" (Вы приводите значение только для одного элемента)?

Цитата Сообщение от Sahamar Посмотреть сообщение
Согласен, что "случайные" матрицы исключаются из подбора.
что значит "исключаются"?

Цитата Сообщение от Sahamar Посмотреть сообщение
Нужно найти кратчайший путь получения максимально возможной матрицы в идеале
Что значит "кратчайший"? Судя по тому, что Вы писали, все пути имеют одинаковую длину. Каждая операция уменьшает количество матриц на 2, и так до тех пор, пока не останется 1 матрица.
А что делать, если останется 2 матрицы?
0
1 / 1 / 0
Регистрация: 31.07.2009
Сообщений: 40
15.03.2016, 10:10  [ТС]
Цитата Сообщение от Shamil1 Посмотреть сообщение
При каких условиях результат сложения становится случайным? Как выглядит "случайный результат" (Вы приводите значение только для одного элемента)?
При условии что в строке не найдется пары для элемента в трех слагаемых матрицах.
1 0 1 0 + 0 1 1 0 + 0 0 1 1 =
x1 = 1 + 0 + 0 = нет пары
x2 = 0 + 1 + 0 = нет пары
x3 = 1 + 1 + 1 = (3/3)+1=2
x4 = 0 + 0 + 1 = нет пары
3 элемента в строке матрицы без пары дают случайный элемент "2 уровня" (1+1+1=(3/3)+1=2) либо в x1 или в x2 или в x4
Цитата Сообщение от Shamil1 Посмотреть сообщение
что значит "исключаются"?
То что использовать результирующую матрицу с неизвестным элементом 2 уровня в матрице не имеет смысла, так как прогнозировать попадания элемента "2 уровня" допустим в x1 не представляется возможным
Цитата Сообщение от Shamil1 Посмотреть сообщение
Что значит "кратчайший"? Судя по тому, что Вы писали, все пути имеют одинаковую длину. Каждая операция уменьшает количество матриц на 2, и так до тех пор, пока не останется 1 матрица.
А что делать, если останется 2 матрицы?
Предположим у нас кол-во матриц 6 с номерами 1,2,3,4,5,6
Какие варианты возможны
1+2+3=123
1+2+4=124
1+2+5=125
1+2+6=126
1+3+4=134
1+3+5=135
1+3+6=136
1+4+5=145
1+4+6=146
1+5+6=156
эти варианты возможны на первом шаге
Каждый шаг образует дерево решений, то есть
В первом ответвлении
принимаются уже матрицы под номерами 123 4 5 6
Во втором ответвлении
принимаются уже матрицы под номерами 124 3 5 6
В третьем ответвлении
принимаются уже матрицы под номерами 125 3 4 6
и так далее
Второй шаг рождает еще больше вариантов, что и является проблемой.
Если остаются в каждом ответвлении менее 3 матриц, то ветвь считается завершенная и на выходе получаем 1 или 2 матрицы
Мне этот алгоритм не нравится по простой причине, что он рождает оооочень много вариантов и при кол-ве больше 100 матриц, кол-во ветвей с решениями достигает невероятных размеров
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
15.03.2016, 12:06
Для чего это вообще? Изначальная задача что, откуда матрицы. Или это просто задачка для решать?
0
1 / 1 / 0
Регистрация: 31.07.2009
Сообщений: 40
15.03.2016, 12:24  [ТС]
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Для чего это вообще? Изначальная задача что, откуда матрицы. Или это просто задачка для решать?
Это практическая задача из игры в которой подбираются прошивки из 12 модулей. Каждый модуль имеет свой уровень. При соединении 3 прошивок получается новая, с более высоким уровнем, который дает более значимый бонус
Заинтересовался подбором чисто из любопытства, каким еще способом можно решить данную задачу.
Решение в лоб дал плачевный результат. При 200-300 прошивок получается около 500 тысяч результатов на первом шаге при исключении достаточного кол-ва брака по разным параметрам.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
15.03.2016, 13:17
Цитата Сообщение от Sahamar Посмотреть сообщение
При несовпадении в ряде значения становятся неопределенные.
Может в расчеты просто подмешивают случайную величину и альтернативы брутофорса не существует? А если комбинация параметров в игре разовая то и брутофорс не имеет смысла?
0
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
15.03.2016, 14:03
Цитата Сообщение от Sahamar Посмотреть сообщение
Это практическая задача из игры в которой подбираются прошивки из 12 модулей.
Можно ли эту игру пощупать или посмотреть летсплей именно данной задачи? У меня предположение, что вы недостаточно полно и правильно описываете данную задачу.
0
1 / 1 / 0
Регистрация: 31.07.2009
Сообщений: 40
15.03.2016, 14:20  [ТС]
https://www.youtube.com/watch?v=J-sE33ZEwjA ссылка на видео моей программы которая перебирает все возможные варианты в пределах одного шага.
https://vk.com/prosh_gm группа в вк где описана программа и дана ссылка на нее
То что не случайную величину а случайный элемент в строке точно, проверено эмпирическим путем.
Боюсь что за эти ссылки я получу по шапке, но реально хочется понять реальность прогнозирования результата отталкиваясь не от имеющих возможностей. Данное изречение подвело меня к мысли идти не сначала а от конца.
То есть допустим нужно получить "Идеальную" прошивку. Берем разбираем её на все возможные варианты и ищем составляющие для этого. Если не находим то перебираем другие варианты. Возможно вариантов будет меньше. Покажу пример
для того чтобы получить прошивку
8 8 8 8
8 8 8 8
8 8 8 8
нам потребуется 3 прошивки
7 7 7 7
7 7 7 7
7 7 7 7
если не находим из имеющих то пытаемся собрать прошивку со всеми элементами 7 уровня
и так далее...
0
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
15.03.2016, 15:58
Цитата Сообщение от Sahamar Посмотреть сообщение
но реально хочется понять реальность прогнозирования результата отталкиваясь не от имеющих возможностей.
Строить дерево решений.
Цитата Сообщение от Sahamar Посмотреть сообщение
Данное изречение подвело меня к мысли идти не сначала а от конца
С конца у вас будет еще больше потенциальных решений.
Думаю, вам нужно использовать алгоритмы типа А* - нужно производить оценку близости матриц к идеальной и пытаться скрещивать в первую очередь те, которые наиболее близки к идеалу либо дадут наибольший скачок.
У вас уже есть критерии - количество бонусов и уровень.

Добавлено через 8 минут
К слову, судя по описанию матриц на оф сайте, у ячейки всего 5 уровней
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
15.03.2016, 16:37
При сложении (1+2+3)/3 наши "потери" (остатки от деления на 3) могут быть 0, 1/3 и 2/3. По всей матрице наши потери могут быть от 0 до 8. Можно попробовать на каждом шаге выбирать тройку матриц с минимальными потерями при сложении.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.03.2016, 16:37
Помогаю со студенческими работами здесь

Нахождение наилучшего алгоритма
А что если не напрягаться взять самый мощный компьютер и заставить его перебрать коды программ компилировать (если возможно) и проверять...

В чем ошибка при выводе двух целых чисел,нахождения результата их деления и выводом результата на экран?
решил вывести с клавиатуры два целых числа,написал программу как написано в учебнике Фаронова В.В. нажимаю ctrl+f9 и в итоге получаю...

Поиск наилучшего варианта
Как построить алгоритм работы задачи? Пусть имеется набор из n рандомных чисел. и есть число, которое задается пользователем. ...

Поиск в таблице наилучшего варианта, подподающего под критерии
Есть БД с таблицей объектов, и поиск по объектам, который может искать по нескольким параметрам (спасибо здешним форумчанам!). Теперь...

Поиск наилучшего решения для системы уравнений с 3-мя процентными переменными
Приветствую, наткнулся на задачу которая показалась мне простой изначально, но чем глубже я ее понимал тем сложнее получалось. Я опишу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru