Тема: Динамика по профилю. Задача "паркет"
Может ктонибудь обьяснить решение предложеное в алгоритмах?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
MAXimal :: φορυμ » Algo » Динамика по профилю. Задача "паркет"
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Может ктонибудь обьяснить решение предложеное в алгоритмах?
http://informatics.mccme.ru/moodle/mod/ … php?id=290 - объяснения, обратите внимание на левую колонку.
http://informatics.mccme.ru/moodle/mod/ … php?id=477 - 5 задач на эту тему.
http://informatics.mccme.ru/moodle/mod/ … php?id=489 - разбор задач.
Кстати доминошную динамику можно реализовать и за O(M*N*M^2)
Кстати доминошную динамику можно реализовать и за O(M*N*M^2)
А как?
Например можно почитать тут http://forums.topcoder.com/?module=Mess … ID=1111225
Там не про O(M*N*M^2), а про O(M*N*2^M)
Тем не менее, количество замощений доминошками прямоугольника все же можно считать за полиномиальное время)
Упс. Конечно описался
На Тимусе есть такая задача
http://acm.timus.ru/problem.aspx?space=1&num=1594
Правда ее сдало всего 9 человек и я не из их числа. Интересно было бы узнать, как все-таки она делается.
В обсуждении есть формула, но в ней фигурируют синусы и косинусы, потому по ней считать нельзя.
KADR
гугли по "ацтекскому диаманту"...
Я находил статьи про Aztec Diamond, но связи с этой задачей я не вижу.
Например, статья Кохася "Разбиение ацтекских диамантов и квадратов на домино". У нас правда не квадрат, но всё равно по-моему вся информация есть в этой или подобных статьях. Кстати, в ней приводится и некая формула Кастелейна, которая как раз основана на косинусах и синусах.
Вообще, есть общий полиномиальный алгоритм для подсчета количества паросочетаний в планарном графе, правда к этой зададаче он не подходит (сложность порядка O(n^3)*(сложность длинного умножения n-битных чисел), где n - количество вершин в графе)
Можно про последний поподробнее?
Статья: http://alexandria.tue.nl/repository/fre … 597563.pdf
Собственно алгоритм:
1) ориентируем граф так, чтобы у каждой грани было нечетное число ребер, ориентированных по часовой стрелке
2) берем знаковую матрицу смежности (она будет антисимметричной)
3) считаем пфаффиан (корень из определителя, http://en.wikipedia.org/wiki/Pfaffian) этой матрицы. Он и будет количеством паросочетаний
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
MAXimal :: φορυμ » Algo » Динамика по профилю. Задача "паркет"