ZDD
От: vnp  
Дата: 11.12.08 23:07
Оценка:
На днях Кнут читал в Стенфорде очередную новогоднюю лекцию. Называлась она Fun with ZDD.

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

Для тех, кто не знает про ZDD, поясню, в стиле лектора, что ZDD очень похожи на BDD, но с подавлением нулей (лектор также подчеркнул, что тем, кто не знает про BDD, будет понятнее).

Был описан очень интересный способ решения комбинаторных задач. Опять-таки, не могу удержаться от длинной цитаты. Один из примеров решал довольно большую задачу коммивояжера. Комментарий Кнута:
"Я не утверждаю, что могу решить задачу коммивояжера за полиномиальное время. Много лет назад мой научный руководитель объяснил мне, что комбинаторную проблему можно решить вручную до некоторого N. Компъютер позволяет решить ее для N+1. Потом пришел закон Мура, и эту проблему стало можно решить для N+3. ZDD позволяет продвинуться до N+5"

Итак, ZDD:
Семейство F выборок из упорядоченного множества (то есть, булеву функцию) можно описать следующим образом. Пусть v — минимальный элемент, поддержаный семейством. Тогда
F -> v
/ \
F0 F1
где F0 есть подсемейство выборок, не поддерживающих v, а F1 — все остальные (t.e. поддерживающие v), из которых, однако, v вычеркнут.
Применяя рекурсивно, семейство представляется в виде списка кортежей (v, lo, hi), где lo и hi — ссылки на левое и правое подсемейства. Важно осознавать, что если по ходу рекурсии некий кортеж встретился дважды, то это один и тот же кортеж. Отдельно в скобках надо добавить, что правая ссылка на пустое множество, и левая ссылка на тождественный ноль оптимизируют список еще больше.
Получившийся список и есть ZDD — Zero-suppressed (binary) Decision Diagram — которая, по словам Кнута (и по его убедительнейшим примерам), есть data structure of choice для решения комбинаторных задач. Прошу заметить, как элегантно рекурсируются в этой схеме обычные булевские операторы.

Я, строго говоря, не хотел пересказывать материал Кнута (но он, то есть Кнут (или материал?) засасывает). Хотел я, собственно, спросить: как часто вам приходится иметь дело с комбинаторными проблемами?

PS: Я уже сказал, что Кнут классный дядька?
Re: ZDD
От: prVovik Россия  
Дата: 12.12.08 06:29
Оценка:
Здравствуйте, vnp, Вы писали:

vnp>Хотел я, собственно, спросить: как часто вам приходится иметь дело с комбинаторными проблемами?


Последний раз имел дело на университетской олимпиаде по программированию
лэт ми спик фром май харт
Re: ZDD
От: LaptevVV Россия  
Дата: 12.12.08 06:41
Оценка:
Здравствуйте, vnp, Вы писали:

vnp>На днях Кнут читал в Стенфорде очередную новогоднюю лекцию. Называлась она Fun with ZDD.

[]
vnp>Я, строго говоря, не хотел пересказывать материал Кнута (но он, то есть Кнут (или материал?) засасывает). Хотел я, собственно, спросить: как часто вам приходится иметь дело с комбинаторными проблемами?
Только вчера на банкете ( ) с одним физиком обсуждал комбинаторную задачу, которую они решают тупым перебором...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: ZDD
От: kl Германия http://stardog.com
Дата: 12.12.08 07:44
Оценка:
Здравствуйте, vnp, Вы писали:

vnp>Я, строго говоря, не хотел пересказывать материал Кнута (но он, то есть Кнут (или материал?) засасывает). Хотел я, собственно, спросить: как часто вам приходится иметь дело с комбинаторными проблемами?


Последний месяц — каждый день. Понадобился весьма специализированный constraint optimization solver. Базовую реализацию я написал за выходные, а с тех пор занимаюсь его оптимизицией под довольно хитрые n-арные констрейнты (вот щас заканчиваю очередной вариант на основе Russian Doll Search).
no fate but what we make
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.