Компьютерный эксперимент и NP-трудные задачи На примере дистанционного Конкурса-игры КИО (Конструируй, Исследуй, Оптимизируй») Задача о пиратах В 1785 году на маленьком острове в Карибском море пираты закопали клад. Для того чтобы в будущем найти клад , они в качестве ориентиров заметили две высокие горы и пальмовое дерево. Записка с описанием поиска клада попала к археологам. Текст записки гласил: От пальмы идите к Соколиной горе и считайте шаги. Затем поверните под прямым углом направо, сделайте такое же количество шагов и воткните в землю палку. Вернитесь к пальме и идите к Орлиной горе, считая шаги, поверните под Прямым углом налево, сделайте такое же количество шагов и воткните в землю палку. Клад будет точно посредине между двумя палками. Археологи нашли обе горы, но пальмы на месте уже не было. Как им найти клад? Пусть A и B – горы, а G – пальмовое дерево. Если сделать такой рисунок в Живой геометрии и провести эксперимент: пошевелить точку G, изображающую пальму, то мы увидим, что при этом точка O (клад) будет оставаться на месте. Другое возможное положение пальмового дерева. Точка O осталась на месте. Дополнительные построения для доказательства гипотезы Задача Штейнера На плоскости даны N точек. Требуется соединить их системой отрезков (дорог), введя, если надо дополнительные точки (перекрестки) так, чтобы суммарная длина отрезков была минимальной. Имеется программа, которая позволяет ставить и удалять дополнительные точки (перекрестки), соединять точки отрезками и измерять суммарную длину отрезков. Задача Штейнера для трех точек P- точка Ферма Если угол в треугольнике не меньше 120°, то вершина этого угла является точкой Ферма. Р. Курант и Г. Роббинс «Что такое математика» Задача Штейнера для трех точек Нахождение точки Ферма Задача Штейнера для 4 точек Задача Штейнера для 4 точек Найденные точки в задаче для 4 точек называются локально оптимальными. Известно, что (см., например Р. Курант и Г. Роббинс): 1. В локально оптимальном варианте в каждом перекрестке сходятся ровно три дороги, образующие углы в 120°. 2. Количество перекрестков, по крайней мере, на два меньше числа исходных пунктов. 3. Если дорога проходит через один из исходных пунктов, то отрезки дорог образуют угол не меньше 120°. Задача Штейнера из КИО Дополнительные Точки отсутствуют Появились три дополнительные точки Как решали задачу участники Конкурса Некоторые пытались обойти все точки «путем». Если не использовать дополнительные точки, то оптимальный вариант получают с помощью алгоритма Краскала: на каждом шаге соединяют две ближайшие вершины и проверяют, не образовалось ли циклов. Если не образовался цикл – ребро сохраняют. На этом слайде изображен лучший результат без дополнительных точек. Эксперимент с тремя точками Здесь уже результат 1200, 96 Обратите внимание, 3 точек что для ближайших 3 точек проводится локальная оптимизация. Еще один вариант с тремя точками Еще одна конфигурация из трех точек, и результат улучшен: 1197,69 Замечаем, что улучшает результат добавление точки там, где линии соединяются под острым уг лом. Добавили четвертую точку: 1195,26 Тоже 4 дополнительные точки: 1182, 03. Образовалась дополнительная точка, где сходятся 4 линии и все углы по 90°. Эту точку делим на две: проводим локальную оптимизацию 4 точек: результат 1190 Те же 4 точки, но иной способ локализации: 1180,94 Это был лучший результат!!! Задача, предложенная на Конкурсе, - это частный случай задачи Штейнера, которая относится к так называемым NP- трудным задачам. Многие из известных алгоритмов имеют полиномиальное время работы: для входных данных размера n время работы в наихудшем случае равно O(nk ) . Оказывается, что не все задачи можно решить за полиномиальное время. Задачи, решаемые с помощью алгоритмов, за полиномиальное время, принято относить к простым задачам. Задачи, для которых время работы алгоритмов, превосходит полиномиальное, относятся к трудным задачам. Среди трудных задач выделяется класс NPполных задач. Для задач этого класса не разработано алгоритмов с полиномиальным временем работы, но и не доказано, что таких алгоритмов не существует Характеристика класса NP- полных задач 1. Если нам предъявлен алгоритм решения задачи, то в течение полиномиального времени мы можем проверить корректность этого решения. 2. Любая задача класса P принадлежит классу NP. 3. Нет доказательства или опровержения, что PNP Занятой бобёр Занятой бобёр Эта задача связана с одной из самых распространенных формализаций понятия алгоритма – машиной Тьюринга. Набором простых команд определяется алгоритм поведения бобра, который может передвигаться вдоль «бесконечной в обе стороны» реки и совершать простые действия: класть бревно в реку (если его там нет), вынимать бревно из реки (если оно там есть) или не делать ни того, ни другого. При совершении действий состояние бобра может меняться. Всего состояний пять. Перед началом выполнения алгоритма бобер «воодушевлен» – это его начальное состояние. Если бобер становится «усталым», алгоритм заканчивает свою работу – это конечное состояние. Также бобер может быть «бодр», «доволен» и «взъерошен». Задача является частным случаем машины Тьюринга. В общем случае у машины Тьюринга может быть любое конечное число состояний, а на ленте (у нас на реке) могут находиться символы из некоторого множества. Решивших Бревен 4 36 5 22 6 6 7 17 8 2 Результаты участников При таким программам можно уложить 8 брёвен Проблемы при решении задачи 1.Трудно доказывать какие-нибудь математические утверждения 2. Как оценить наибольшее число бревен, например, можно ли утверждать, что их будет не более 100. 3. Можно, конечно перепробовать все варианты и найти оптимальный, но тогда придется перебрать ≈850 млрд вариантов. 4. Невозможно оценить, остановится бобёр или нет. Тем не менее перебор можно ускорить, если строить перебираемые программы постепенно (расщеплять на каждом шаге). Был получен следующий результат: 13 брёвен и наибольшее количество шагов 107. Так и осталось неясным: если бобёр сделал более 1000 Итераций, то он остановится или зациклится. Починка сети Десять пуговиц соединены резинками. Как - неизвестно. Из этой паутины поочередно удаляется каждая пуговица вместе с резинками, соединяющими ее с остальной сетью. По полученным сетям с девятью пуговицами необходимо реконструировать исходную сеть. Таким образом, мы имеем граф, 10 подграфов, полученных поочередным отбрасыванием вершин и смежных им ребер. Полученные 10 подграфов образуют колоду. Итак, необходимо по колоде восстановить исходный граф. Починка сети Гипотеза Келли-Улама Все графы порядка n>2 реконструируемы Справедливость этой гипотезы подтверждена для 3 V 10 Стратегия решения (частные случаи): 1) Если в исходном графе есть изолированная вершина, то, взяв элемент колоды, соответствующий этой вершине, добавим к изолированную вершину. 2) Если в исходном графе есть вершина, к которой примыкает только одно ребро, то, взяв элемент колоды, в котором этой вершины нет, можно поочередно соединять новую вершину с остальными вершинами колоды. 3) Наличие компонент связности позволяет восстановить исходный граф. Задачи КИО-2009 Сезам, откройся! От каждого путника, желающего добыть сокровища горы Сезам, Дух Горы требует принести несколько серебряных монет. По своему усмотрению Дух обращает часть монет в золотые монеты желтого золота, а остальные - в монеты красного золота, которые немного тяжелее монет из желтого золота. При этом Дух никогда не превращает все монеты в золотые одного вида. Путника, принесшего монеты, Дух испытывает задачей. Он просит не более трёх раз положить равное число монет на разные чашки весов так, чтобы после превращения монет в золотые равновесие весов хотя бы раз нарушилось. При этом хитрый Дух всегда старается так превращать монеты в два вида золотых, чтобы при всех взвешиваниях весы оставались в равновесии. Вы должны перехитрить Духа и указать такой алгоритм взвешиваний, при котором для выбранного вами числа монет равновесие всегда нарушается. (Для удобства решения все три взвешивания изображены разными весами, и монету с одним номером можно использовать повторно на разных весах). Выберите закладку с числом монет, с которыми вы идете за сокровищем. Указав расположение монет на весах для всех взвешиваний, нажмите на кнопку TEST. (Кнопка TEST активна только тогда, когда на обеих чашках лежит одинаковое число монет.) Если Вы справились с задачей, откроется тайник с сокровищем, если нет – вы увидите такое превращение монет, при котором весы при всех взвешиваниях остались в равновесии. В режиме «отладка» вы можете сами превращать монеты из желтого золота в красное и обратно двойным щелчком мыши. Щелчок правой кнопкой мыши удалит монету с весов. Ваша цель - решить задачу для разного числа монет. Выигрывает тот, кто сумеет решить задачу Духа Горы, принеся для испытания большее число монет. Участники, прошедшие испытания по одинаковому наибольшему числу монет, сравниваются между собой по результатам с меньшим числом монет. В каком порядке нужно действовать? Шаг 1. Войти на сайт Конкурса: www.ipo.spb.ru/kio нажать кнопку РЕГИСТРАЦИЯ Освещение города Муниципалитет маленького городка хочет сэкономить на освещении улиц. Помогите ему разработать схему освещения, расставив фонари так, чтобы они осветили все закоулки города, но число фонарей при этом было минимальным. Программа, с которой вы работаете, автоматически сохраняет лучшее решение, поэтому сохранение делать не обязательно. При выходе из программы лучшее решение будет записано в таблицу ваших результатов. Математическое скалолазание Известно, что многие известные ученые занимались альпинизмом. Однажды они устроили соревнование по скалолазанию по необычным правилам. Одна команда забивает в скалу 16 крючьев, а другая соединяет крючья веревкой без пересечений так, чтобы потом как можно скорее пройти по ней весь маршрут. Считается, что по всем участкам маршрута скалолазы движутся с одной скоростью, поэтому вторая команда всегда прокладывает веревку по крючьям так, чтобы минимизировать длину маршрута. Наоборот, команда, забивающая крючья, должна позаботиться о том, чтобы даже самый короткий маршрут, проложенный по ним, был как можно длиннее. Ваша задача – вбить крючья так, чтобы максимально усложнить задачу сопернику. Роль соперника играет программа, которая сама прокладывает кратчайший маршрут. (В качестве небольшого развлечения вы всегда можете посмотреть, как скалолаз проходит маршрут, хотя для решения задачи это неважно). Свет в лабиринте Помогите археологам составить экономную схему освещения раскопок. Найдите такую расстановку точечных источников света, чтобы весь уголки оказались освещенными минимальным числом светильников. Спасибо за внимание! Рассказывала Энтина Софья Борисовна, доцент кафедры Высшей математики -2 СПбГЭТУ («ЛЭТИ»)