powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритмы. Оптимизация наборов красок при печати
25 сообщений из 82, страница 3 из 4
Алгоритмы. Оптимизация наборов красок при печати
    #38709537
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, всё-таки поступило уточнение, нельзя картинку повторно пропечатать на другом наборе красок.
Так что считаем, что это скорее ткацкий станок с нитями и каждое изделие должно быть целиком соткано на заправленном наборе нитей, (типа нельзя полотнище повторно воткнуть в станок и вплести в середину нити из другого набора :)
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38709541
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anvanoНу это я такую постановку задачи выбрал просто :) надо же было кейс придумать.

В реальности это что угодно может быть, печатающее устройство с банками, токарный станок с кассетой инструментов, ткацкий станок с мотками нитей и т.д. и т.п. любое устройство имеющее ограниченный магазин инструментов/материалов, набирающийся их широкого исходного набора этих инструментов/материалов.


anvanoДа, всё-таки поступило уточнение, нельзя картинку повторно пропечатать на другом наборе красок.
Так что считаем, что это скорее ткацкий станок с нитями и каждое изделие должно быть целиком соткано на заправленном наборе нитей

Это мля скорее всего новый вид ПРО с разными ракетами, ясен пень - все самолеты и ракеты нужно сбивать с первого раза....
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38709553
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anvanoВот пример реальных тестовых данных.
Первая строка - номера красок (их тут 70 разных)
Первый столбец - названия картинок
единицы - краска используется в картинке
нули - не используется

кому нужны данные в виде бд для удобства то качайте mdb в формате Акцесс 2000...
- таблица Лист1 собственно данные из экселя, просто добавил счетчик в начало и поле выбора в конец...
- запрос (Использование банок в картинках) покажет сколько раз банка используется при печати 25 картинок...

- Пример скорее всего не совсем реальный (банки представлены по убыванию рейтинга использования и нет ни одной банки, которая не используется вообще)....
- но есть вышеупомянутые хвосты (банки с 46 по 70 используются всего один раз) см. запрос
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38709565
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>банки представлены по убыванию рейтинга использования и
ну в экселе отсортировал

>нет ни одной банки, которая не используется вообще)....
а зачем они нужны? первое что делается - отбрасываются неиспользуемые краски и засчет этого уменьшается матрица
представь, что банок 100, как в исходной постановке, но 30 из них не используются вообще ни в одной картинке

>но есть вышеупомянутые хвосты (банки с 46 по 70 используются всего один раз) см. запрос
да, хвосты есть в данных
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38709580
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anvano,

Да не... все нормально... и примерчик удачный... башню можно снести... особенно что банки 64 - 70 используются только один раз и только для печати картинки 8, а банки 53-59 печатают только картинку 1...
с кандачка не получится решить задачку....
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38709591
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут мысль пришла с рекурсивным обходом дерева.

Берём картинку №1 и начинаем мёрджить её массив рекурсивно с остальными картинками.
Условие выхода из рекурсии - количество элементов в мёрдже >= 30

Итого при каждом выходе из рекурсии получаем набор красок (мёрдж), а картинки, покрываемые этим набором - это путь до узла.
По идее дерево получается кособокое (т.к. каждый узел имеет смысл складывать только со следующими по порядку) и условие выхода из рекурсии довольно быстро достигается (глубина дерева не оч большая)
То бишь до какого-то количества картинок будет работать даже быстро.

Потом отсортировать полученные наборы по количеству покрытых картинок - выкинуть эти картинки из списка.
Для оставшихся картинок повторить всё заново.

Ща попробую закодить весь этот бред, мож чего получится.
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38709604
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При том варианте как ты нарисовал в мы имеем булеву матрицу.
По вертикали - файлы. По горизонтали - краски.
Задача - отсортировать строки таким порядком чтобы суммарное
расстояние Хэмминга между векторами красок было минимальным.
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38709748
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anvanoТут мысль пришла с рекурсивным обходом дерева.

похоже если не удастся подвести условие задачи под уже известный тип задач, то всё будет упираться в неподъемный по ресурсам тупой перебор (комбинаторика тут просто космическая)...
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38709948
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу объема работ.

Думаю что алгоритм должен работать для пачки картинок.
Что такое пачка? Возможно это 1 рабочий цикл издательства.
Получили флешку с картинками. Пульнули ее в алгоритм.
Оптимизировали порядок. Отпечатали. Всё. Цикл закончен.

Тоесть никто не говорит что будет больше 1000. Возможно
это просто некая верхняя оценка.

anvano, верно?
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38709994
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПо поводу объема работ.

Думаю что алгоритм должен работать для пачки картинок.
Что такое пачка? Возможно это 1 рабочий цикл издательства.
Получили флешку с картинками. Пульнули ее в алгоритм.
Оптимизировали порядок. Отпечатали. Всё. Цикл закончен.

Тоесть никто не говорит что будет больше 1000. Возможно
это просто некая верхняя оценка.

anvano, верно?

Да, именно так.

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

Конечно к тысяче сложно будет пришить это всё.
С другой стороны, я попробовал тупо прерывать рекурсию на какой-то итерации - результаты тоже хороши. Это конечно будет не оптимальный вариант (т.к. не было полного перебора дерева), но сойдет.
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38710316
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, допилил скрипт с рекурсивным алгоритмом для тестовых данных (25 штук) выполняется секунд 40.

За 4 перенастройки палитры можно распечатать все 25 картинок :)
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38710337
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для 50 картинок Execution time уже 364.8032 сек. в 10 раз больше.
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38710359
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anvano, делись софтом, хвастун!
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38710381
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonanvano, делись софтом, хвастун!

Да какой там софт, обычный скрипт на PHP :)
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38710386
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anvano,

ну чё, нормально... и время тоже приемлемое (это потому что всё внутри кастрюли)...
нужно еще прогнать около 10 - 50 вариантов для достоверности...
сколько пообещали за решение ? задачка то денежная, и материал и время, и сбережение оборудования...
а чё сразу то не сделал ? Без того чтоб в бока попинали никак ?
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38710710
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anvanoДля 50 картинок Execution time уже 364.8032 сек. в 10 раз больше.
50 картинок оптимизирует 6 минут?????
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38711017
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonanvanoДля 50 картинок Execution time уже 364.8032 сек. в 10 раз больше.
50 картинок оптимизирует 6 минут?????

Одна так называемая "перезаправка" в реальности занимает около часа.

Так что если скрипт будет даже целый час выполняться и при этом уменьшит количество перезаправок - уже профит.
Т.к. это будет час работы компьютера, а не оплачиваемого специалиста
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38711064
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... 6 минут ждать ответа от приложения. Это как-то жестоко.

Иногда пользователь согласен видеть "грубый результат" через несколько секунд
старта приложения. А уж потом - его уточнение.

И в твоём алгоритме как мне кажется это будет хорошим подходом.
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38711076
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonanvanoДля 50 картинок Execution time уже 364.8032 сек. в 10 раз больше.
50 картинок оптимизирует 6 минут?????

Это язык интерпретируемый, плюс функции используются тяжелые ( array_merge, sort, array_unique) на каждой итерации.

Для 25 картинок там всего-лишь 240 тыс итераций, а оно целых 40 секунд их молотит. Это очень долго, согласен.

Простор для оптимизации алгоритма широк - можно заменить операции с массивами на какие-то битовые манипуляции, переписать всё на более низкоуровневом языке типа C++ - должно ускориться существенно.

Но всё равно, рекурсивный обход - сложность возрастает экспонециально (если не факториально) от количества элементов.

Грубый результат можно получать , ограничив глубину обхода дерева, может так и сделаю.

Плюс у меня не делется предварительная обработка массива данных.
Во-первых, надо заранее выкидывать их процесса оптимизации все картинки, которые полностью покрываются какой-то другой картинкой. Т.к. очевидно, если мы палитрой распечатаем эту родительскую картинку - то той же палитрой распечатаем все дочерние картинки, которые на 100% по краскам пересекаются с родительской.
Во-вторых, надо исходный набор отсортировать по увеличению количества красок и начинать оптимизацию с картинок, с наименьшим количеством красок. Тогда мы сможем очень быстро составлять палитры (просто стыкуя картинки), покрывающие большое количество картинок с малым набором красок - их выкидывание из дальнейших шагов так же сильно уменьшит объем расчетов.
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38711083
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anvano,

В третьих, на каждой итерации можно проверять еще не охваченные картинки на предмет возможности их печати текущей версией палитры.
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38711344
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anvano, предложу оптимизацию.

Посчитай частоты использования всех красок для всех картинок. Самые популярные краски
вынеси для 1-й итерации твоего алгоритма.
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38711355
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПосчитай частоты использования всех красок для всех картинок. Самые популярные краски
вынеси для 1-й итерации твоего алгоритма.

это я предложил в самом начале... проверил, оказалось - фигня... его первая тридцатка покрывает 13 картинок, а при таком подходе (по популярности) только 7 картинок и на второй итерации - вообще затык, ни одной картинки... по этому компоновка картинок перебором в 30- ку, которую он сам и предложил пока самая рулёзная... перекрыть ее может (по времени выполнения) только какой нибудь известный метод, который пока никто не усмотрел в этой задаче...
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38711389
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anvanoВо-вторых, надо исходный набор отсортировать по увеличению количества красок и начинать оптимизацию с картинок, с наименьшим количеством красок. Тогда мы сможем очень быстро составлять палитры (просто стыкуя картинки), покрывающие большое количество картинок с малым набором красок - их выкидывание из дальнейших шагов так же сильно уменьшит объем расчетов.А я вот, считаю что надо наоборот - начинать с картинок с максимальньм количеством красок.
Почему? Потому что иначе набор "30" быстро заполнится несколькими картинками с малым количеством красок, и будет затык для тех, у которых красок побольше.
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38711409
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.Почему? Потому что иначе набор "30" быстро заполнится несколькими картинками с малым количеством красок

Это как? В примере Есть картинки и с одной краской и с двумя, тут и слепому видно что в 30 банок влезет сразу минимум 30 картинок с одной уникальной краской, а одна картинка в 19 банок сразу съедает пол обоймы...
...
Рейтинг: 0 / 0
Алгоритмы. Оптимизация наборов красок при печати
    #38711412
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagS.G.Почему? Потому что иначе набор "30" быстро заполнится несколькими картинками с малым количеством красок

Это как? В примере Есть картинки и с одной краской и с двумя, тут и слепому видно что в 30 банок влезет сразу минимум 30 картинок с одной уникальной краской, а одна картинка в 19 банок сразу съедает пол обоймы...Вы пропустили прочитать конец моего предложения, ну да ладно. Спорить, наверное можно долго, пусть ТС попробует прогнать несколко тестов с *реальными* данными, сортируя и так и иначе.
...
Рейтинг: 0 / 0
25 сообщений из 82, страница 3 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритмы. Оптимизация наборов красок при печати
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]