809277
столько раз учителя, ученики и родители
посетили сайт «Инфоурок»
за прошедшие 24 часа
+Добавить материал
и получить бесплатное
свидетельство о публикации
в СМИ №ФС77-60625 от 20.01.2015
Дистанционные курсы профессиональной переподготовки и повышения квалификации для педагогов

Дистанционные курсы для педагогов - курсы профессиональной переподготовки от 5 480 руб.;
- курсы повышения квалификации от 1 400 руб.
Московские документы для аттестации

ВЫБРАТЬ КУРС СО СКИДКОЙ 60%

ВНИМАНИЕ: Скидка действует ТОЛЬКО до 28 февраля!

(Лицензия на осуществление образовательной деятельности №038767 выдана ООО "Столичный учебный центр", г.Москва)

Инфоурок / Математика / Конспекты / Урок "Гамильтоновы циклы и задача коммивояжера" (9 класс)

Урок "Гамильтоновы циклы и задача коммивояжера" (9 класс)

Напоминаем, что в соответствии с профстандартом педагога (утверждён Приказом Минтруда России), если у Вас нет соответствующего преподаваемому предмету образования, то Вам необходимо пройти профессиональную переподготовку по профилю педагогической деятельности. Сделать это Вы можете дистанционно на сайте проекта "Инфоурок" и получить диплом с присвоением квалификации уже через 2 месяца!

Только сейчас действует СКИДКА 50% для всех педагогов на все 111 курсов профессиональной переподготовки! Доступна рассрочка с первым взносом всего 10%, при этом цена курса не увеличивается из-за использования рассрочки!

ВЫБРАТЬ КУРС И ПОДАТЬ ЗАЯВКУ
библиотека
материалов
Скачать материал целиком можно бесплатно по ссылке внизу страницы.

Урок «Гамильтоновы циклы и задача коммивояжера»

факультативного курса «теория графов и их приложения» (9 класс)


Ранее мы рассмотрели эйлеровы циклы, на этом же занятии – рассмотрим другой вид циклов – гамильтоновы.

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

Такой цикл получил название гамильтонова, так как эта задача была предложена выдающимся ирландским математиком Уильямом Гамильтоном. Он предложил совершить «кругосветное» путешествие по графу, имеющему форму додекаэдра. Додекаэдр - это многогранник, гранями которого служат 12 правильных пятиугольников (рисунок 1,а). У него 20 вершин и 30 ребер. В этой задаче вершинам додекаэдра соответствовали известные города, такие как Брюссель, Амстердам, Эдинбург, Пекин, Прага, Дели, Франкфурт и др., а рёбрам соответствовали дороги их соединяющие. Путешественник должен пройти «вокруг света», проложив путь, проходящий через все вершины ровно один раз.


C:\Users\WHITER~1\AppData\Local\Temp\Rar$DRa0.112\Dodecahedron.png

C:\Users\WhiteRabbit\Desktop\Гамильтоновы циклы\Гамильтонова_линия_для_додекаэдра.png

Рисунок 1 – Додекаэдр (а) и плоский граф, ему соответствующий (б)


Для удобства пользования головоломкой, в каждую вершину додекаэдра был вбит гвоздь, и проложенный путь отмечался нитью, которая обматывалась вокруг гвоздя. Но эта конструкция оказалась слишком громоздкой и не практичной, и Гамильтон заменил объемный додекаэдр (рисунок 1,а) изоморфным ему плоским графом (рисунок 1,б).

Известны условия существования гамильтонова цикла в графе.

Необходимое условие довольно очевидно: если неориентированный граф G содержит гамильтонов цикл, тогда в нём не существует ни одной вершины vi с локальной степенью deg(vi) < 2. Это хорошо иллюстрируется рисунком 2 – в графе, изображенном на рисунке 2,а имеется гамильтонов цикл, и все степени его вершин равны 2, а в графе, изображенном на рисунке 2,б – гамильтонова цикла нет, так как в графе есть вершина со степенью меньше 2. Вершина v4 со степенью 1 не дает построить цикл.


C:\Users\WhiteRabbit\Desktop\Гамильтоновы циклы\Необходимость.png

Рисунок 2 – Необходимое условие существования гамильтонова цикла


Достаточных условий на данный момент известно несколько. Рассмотрим два таких утверждения. Утверждение, приведенное ниже, называют теоремой Оре.

Рассмотрим граф G с n≥3 вершинами. Пронумеруем их произвольным образом и выпишем их последовательность (1):

v0, v1, …, vi-1, vi, vi+1,…, vn-1

(1)

В этом случае может оказаться, что некоторые две соседние в данной последовательности вершины, например vk и vk+1, не соединены ребром. Назовем такую ситуацию «разрывом» между вершинами vk и vk+1

Очевидно, что в последовательности v0, v1, …, vi-1, vi не возникнут другие разрывы, если ее записать в обратном порядке, а именно: vi, vi-1, …, v1.

Предположим, что разрыв в последовательности (1) имеется между вершинами v0 и v1 (можно выбрать любые вершины). Предположим также, что vi – вершина графа G, связана ребром с вершиной v0. Очевидно, что число таких вершин vi связанных с v0 равно степени этой вершины: deg(v0).

Пытаясь ликвидировать разрыв в исходной последовательности (1), перепишем ее в таком порядке: v0, vi, vi-1, …, v2,v1, vi+1,…, vn-1. В результате число разрывов уменьшится на единицу в том случае, если между вершинами v1 и vi+1 не возникнет новый разрыв.

Вершину vi среди (n-1) вершин, не совпадающих с v0, всегда можно найти так, чтобы между v1 и vi+1 не возник новый разрыв, если справедливо неравенство (2):

deg(v0) ≥ (n-1) − deg(v1)

(2)

В данном неравенстве справа подсчитывается число разрывов, которые могут возникнуть при всевозможных перестановках последовательности (1).

Теперь необходимо вспомнить, что вершины v0 и v1 были выбраны произвольно; можно было рассмотреть разрыв между любыми другими соседними вершинами в последовательности (1); или даже вершинами vi и vj не стоящими рядом. Лишь необходимо соблюдать неравенство (3):

deg(vi) ≥ (n-1) − deg(vj)

(3)

Заметим, что неравенство (3) симметрично относительно vi и vj, поэтому его можно записать в виде (4):

deg(vi) + deg(vj) ≥ (n-1)

(4)

И тогда в последовательности (1) удастся ликвидировать все разрывы. А это означает, что в графе G найдется гамильтонов путь. Но нас интересует наличие гамильтонова цикла. Покажем, что если для любой пары вершин vi и vj графа G с n вершинами справедливо неравенство (5):

deg(vi) + deg(vj) ≥ n

(5)

то граф G обладает гамильтоновым циклом.

Рассмотрим гамильтонов путь, связывающий вершины vi и vj графа G. Пусть w - одна из вершин графа G, связанная ребром с вершиной vi, Тогда в силу доказанного ранее хотя-бы для одной из таких вершин w найдется в гамильтоновом пути смежная с ней вершина u, такая, которая связана ребром с vj. Добавляя к гамильтонову пути ребра (vi, w) и (u, vj) и удаляя из него ребро (u, w), получим гамильтонов цикл (рисунок 3).


C:\Users\WhiteRabbit\Desktop\Гамильтоновы циклы\Теорема Оре.png


Рисунок 3. Образование гамильтонова цикла из цепи


Второе утверждение называется условием Дирака, оно сформулировано и доказано в 1952 году. Если в графе G, имеющем n вершин, степень каждой вершины не меньше, чем hello_html_m6601dad2.gif, то граф G – гамильтонов. Зачастую, данное утверждение доказывается на базе предыдущего, но мы приведем здесь независимое доказательство, данное Д.Дж.Ньюманом.

Пусть граф, удовлетворяющий условию Дираку, не гамильтонов. Добавим к исходному графу G новую вершину, соединив ее ребрами со всеми вершинами графа G. Если получившийся граф не является гамильтоновым, добавим еще одну вершину, и также соединим ее ребрами со всеми вершинами графа G, не соединяя, однако с предыдущей добавленной вершиной. Таким образом, мы добавим k новых вершин, причем k – наименьшее число вершин, необходимых для того, чтобы полученный граф G' стал гамильтоновым. Это обязательно произойдет, даже в случае если исходный граф G – пустой, так как в этом случае понадобится добавить n новых вершин. Итак, в новой графе будет (n+k) вершин (рисунок 4).

C:\Users\WhiteRabbit\Desktop\Гамильтоновы циклы\Условие Дирака.png

Рисунок 4. К доказательству условия Дирака


Пусть vpw→…→v гамильтонов цикл в получившемся графе G, где v, w - вершины из G, а p - одна из добавленных вершин. Тогда w не является смежной с v, так как в противном случае мы могли бы не использовать вершину p – гамильтонов цикл в графе G уже присутствовал бы, что противоречит минимальности k и начальному преположению. Кроме того, например, вершина, w, смежная с вершиной w, не может непосредственно следовать в выстраиваемом цикле за вершиной v , смежной вершине v, потому что тогда можно было бы заменить цикл vpw→…→v’→w’→…→v циклом vv'→…→ww’→…→v, изменив направление обхода между вершинами w и v b и исключив добавленную вершину p из гамильтонова цикла, а это опять же противоречит минимальности k.


C:\Users\WhiteRabbit\Desktop\Гамильтоновы циклы\Доказательство Ньюмана.png

Рисунок 5. К доказательству условия Дирака


Отсюда следует, что число вершин графа G’, не являющихся смежными с w, не меньше числа вершин, смежных с v (то есть равно, по меньшей мере, hello_html_218ba0ae.gif); с другой стороны, очевидно, что число вершин графа G, смежных с w, тоже равно, по меньшей мере, hello_html_218ba0ae.gif. А так как ни одна вершина графа G не может быть одновременно смежной и не смежной вершине w, то общее число вершин графа G, равное n+k, не меньше, чем n+2k, что невозможно. Утверждение доказано.

Существуют и другие достаточные условия наличия гамильтонова цикла в графе, например, условие Оре: пусть n - количество вершин в данном графе и n>2 . Если для любой пары несмежных вершин (v, w) выполнено неравенство deg(v)+deg(w)≥n, то данный граф – гамильтонов. Или, формулируя иначе, сумма степеней любых двух несмежных вершин не меньше общего числа вершин в графе.

С построением гамильтонова цикла связана задача коммивояжера. Коммивояжер – торговец, путешествующий по разным городам и предлагающий какие-либо товары (или принимающий заказы по каталогу). Такой способ торговли был популярен в США до широкого распространения интернета. Пусть область, которую должен посетить коммивояжер содержит несколько городов, расстояния (или стоимость проезда) между которыми известны. Требуется найти маршрут, проходящий через все города по одному разу и возвращающийся в исходный пункт. Если таких маршрутов несколько, то необходимо отыскать самый короткий (или самый дешевый).

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

Исходя из этого математическая формулировка задачи коммивояжера такова: требуется найти гамильтонов цикл минимального веса.

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

Задача коммивояжера относится к очень сложным задачам – ее можно решить только перебором всех возможных комбинаций. А количество различных комбинаций при построении оптимального маршрута очень велико. Так, если задача решается для полного неориентированного графа с n вершинами, то число маршрутов, которые надо проанализировать будет равно hello_html_m51571c7b.gif, а для ориентированного еще больше: hello_html_4eca702d.gif. Например, для полного неориентированного графа с пятью вершинами число возможных маршрутов составит 12, это не очень много. А для неорграфа с 10 вершинами уже порядка 181 тыс. комбинаций.

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

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

C:\Users\WhiteRabbit\Desktop\Гамильтоновы циклы\Задача 2.png

Рисунок 5. Метод ближайшего соседа: исходный граф (а) и построение гамильтонова цикла (б)


Начнем строить гамильтонов цикл, выбрав в качестве начальной любую вершину, например v1. Стоя в вершине v1 просматриваем инцидентные ей ребра, сравнивая их веса. Если имеется несколько ребер с одинаковыми наименьшими весами, можно выбрать любое. Наименьший вес, равный 2, имеет ребро (v1, v2), поэтому следующей вершиной цикла является вершина v2. Повторяя этот шаг и выбирая ребра с наименьшим весом, можно построить гамильтонов цикл: v1v2v4v3v5v1 с общим весом 12 (рисунок 5,б)

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

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

  1. v1v2v1 с весом цикла 4;

  2. v1v3v1 с весом цикла 8;

  3. v1v4v1 с весом цикла 6;

  4. v1v5v1 с весом цикла 6;

Выберем цикл с наименьшим весом v1v2v1 (рисунок 6,а).

C:\Users\WhiteRabbit\Desktop\Гамильтоновы циклы\Задача 2 NVI.png

Рисунок 6. Метод ближайшей вставки: шаг 1 (а), шаг 2 (б), шаг 3 (в), шаг 4 (г)



Теперь вставим в цикл новую вершину и опять подсчитаем веса циклов. Здесь возможны варианты:

  1. v1v2v3v1 с весом цикла 9;

  2. v1v2v4v1 с весом цикла 7;

  3. v1v2v5v1 с весом цикла 9;

Опять выбираем цикл с наименьшим весом: v1v2v4v1 (рисунок 6, б).

Продолжая алгоритм, вставляем в цикл следующую вершину. Варианты:

  1. v1v2v4v3v1 с весом цикла 10;

  2. v1v2v4v5v1 с весом цикла 9;

Выбираем цикл v1v2v4v5v1 (рисунок 6, в).

Наконец, вставляем последнюю вершину в цикл и получаем такую последовательность обхода: v1v2v4v5v3v1 с суммарным весом 13 (рисунок 6, г). Этот результат хуже, чем при использовании предыдущего метода.

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

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

Задачи для самостоятельного решения

  1. Система авиасообщения небольшой страны построена так, что каждый город соединен не менее чем с половиной других городов. Можно ли проложить такой маршрут облета городов, который начинается и заканчивается в одном и том же городе и каждый город посещается ровно один раз?

  2. На политический саммит собралось четное число глав государств, которые либо находятся в дружественных отношениях, либо враждуют. Оказалось, что у каждого главы государства друзей больше, чем врагов. Можно ли рассадить глав государств за круглым столом так, чтобы справа и слава от каждого из них будут сидеть главы дружественных стран?

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


Рекомендуемая литература

  1. Березина Л. Ю. Графы и их применение: Пособие для учителей с ил. – М.: Просвещение, 1979. – 143 с.

  2. Мельников О.И. Занимательные задачи по теории графов. – Минск: ТетраСистемс, 2001. – 144 с.

  3. Мельников О.И. Незнайка в стране графов: Пособие для учащихся. Изд. 3-е, стереотипное. - М.: КомКнига, 2007. – 160 с.

  4. Мельников О.И. Теория графов в занимательных задачах. Изд.3, испр. и доп. – М.: Книжный дом «ЛИБРОКОМ», 2009. – 232 с.


Краткое описание документа:

Предлагаемый материал представляет собой конспект урока "Гамильтоновы циклы" факультативного курса "Элементы теории графов и их приложения" (9 класс). Академик И.М.Яглом, в предисловии к книге О.Оре «Графы и их применение» отмечает, что несмотря на значительную важность для прикладной науки, «учение о графах очень подходит для изложения начинающим, поскольку соединяет большую геометрическую наглядность с математической содержательностью и с возможностью обходиться без громоздкого аппарата». Именно поэтому изучение теории графов можно рекомендовать в старших классах общеобразовательной школы.

Общая информация

Номер материала: ДВ-459614

Вам будут интересны эти курсы:

Курс повышения квалификации «Табличный процессор MS Excel в профессиональной деятельности учителя математики»
Курс повышения квалификации «Внедрение системы компьютерной математики в процесс обучения математике в старших классах в рамках реализации ФГОС»
Курс повышения квалификации «Педагогическое проектирование как средство оптимизации труда учителя математики в условиях ФГОС второго поколения»
Курс профессиональной переподготовки «Математика: теория и методика преподавания в образовательной организации»
Курс повышения квалификации «Изучение вероятностно-стохастической линии в школьном курсе математики в условиях перехода к новым образовательным стандартам»
Курс профессиональной переподготовки «Экономика: теория и методика преподавания в образовательной организации»
Курс повышения квалификации «Специфика преподавания основ финансовой грамотности в общеобразовательной школе»
Курс повышения квалификации «Специфика преподавания информатики в начальных классах с учетом ФГОС НОО»
Курс профессиональной переподготовки «Теория и методика обучения информатике в начальной школе»
Курс профессиональной переподготовки «Математика и информатика: теория и методика преподавания в образовательной организации»
Курс профессиональной переподготовки «Инженерная графика: теория и методика преподавания в образовательной организации»
Курс повышения квалификации «Развитие элементарных математических представлений у детей дошкольного возраста»
Курс повышения квалификации «Методика преподавания курса «Шахматы» в общеобразовательных организациях в рамках ФГОС НОО»
Курс повышения квалификации «Методика обучения математике в основной и средней школе в условиях реализации ФГОС ОО»
Курс профессиональной переподготовки «Черчение: теория и методика преподавания в образовательной организации»

Благодарность за вклад в развитие крупнейшей онлайн-библиотеки методических разработок для учителей

Опубликуйте минимум 3 материала, чтобы БЕСПЛАТНО получить и скачать данную благодарность

Сертификат о создании сайта

Добавьте минимум пять материалов, чтобы получить сертификат о создании сайта

Грамота за использование ИКТ в работе педагога

Опубликуйте минимум 10 материалов, чтобы БЕСПЛАТНО получить и скачать данную грамоту

Свидетельство о представлении обобщённого педагогического опыта на Всероссийском уровне

Опубликуйте минимум 15 материалов, чтобы БЕСПЛАТНО получить и скачать данное cвидетельство

Грамота за высокий профессионализм, проявленный в процессе создания и развития собственного учительского сайта в рамках проекта "Инфоурок"

Опубликуйте минимум 20 материалов, чтобы БЕСПЛАТНО получить и скачать данную грамоту

Грамота за активное участие в работе над повышением качества образования совместно с проектом "Инфоурок"

Опубликуйте минимум 25 материалов, чтобы БЕСПЛАТНО получить и скачать данную грамоту

Почётная грамота за научно-просветительскую и образовательную деятельность в рамках проекта "Инфоурок"

Опубликуйте минимум 40 материалов, чтобы БЕСПЛАТНО получить и скачать данную почётную грамоту

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