Урок по теме "Жадные алгоритмы (задача Прима-Крускала)"
план-конспект урока по информатике и икт (11 класс)

Рыжих Светлана Николаевна

Урок по учебнику К.Ю. Полякова и Е.А. Еремина (углубленный уровень)

Скачать:

ВложениеРазмер
Файл tehnologicheskaya_karta.docx338.91 КБ
Файл prilozhenie_6.docx14.28 КБ
Файл prilozhenie_5.docx50.61 КБ
Файл prilozhenie_4.docx10.9 КБ
Файл prilozhenie_3.pptx104.4 КБ
Файл prilozhenie_2.docx96.05 КБ
Файл prilozhenie_1.pptm252.97 КБ

Предварительный просмотр:

Технологическая карта урока

Тема урока: Жадные алгоритмы (задача Прима-Крускала).

ФИО (полностью): Рыжих Светлана Николаевна

  1. Место работы: МБОУ «Средняя общеобразовательная школа № 35 им. К.Д. Воробьева» г. Курска
  2. Должность: учитель информатики
  3. Предмет: информатика
  4. Класс: 11 класс.
  5. Тема и номер урока: «Алгоритмизация и программирование», урок № 82
  6. Учебник:                                                                                                                               

        Информатика: учебник для 11 класса. Часть I. Углубленный уровень. / К.Ю. Поляков, Е.А. Еремин  – М.: БИНОМ. Лаборатория знаний, 2013.

  1. Длительность урока: 45 минут.

Тема урока

Жадные алгоритмы (задача Прима-Крускала)

Тип урока

Урок решения частных задач с применением открытого способа

Цель урока

Разобрать алгоритм Крускала для поиска в графе остовного связанного дерева минимального веса

Планируемый

результат обучения,

в том числе

формирование УУД

Предметные        

умение находить оптимальное решение при использовании «жадного алгоритма»;

Метапредметные

Познавательные УУД:  формирование представления о графе как о наглядном средстве представления состава и структуры системы;   формирование представления о способе реализации решения задач оптимизации с помощью языка программирования  Pascal;

Коммуникативные УУД: организация самостоятельной работы, работы в группе (самостоятельно определять цели, роли, задавать вопросы, вырабатывать решения). Учет разных мнений и стремление к координации различных позиций в сотрудничестве;

Личностные УУД: выработка культуры общения, взаимопомощь обучающихся, формирование интеллектуальной и эмоциональной активности обучающихся, воспитание чувства ответственности за результаты своего труда;

Регулятивные УУД:  определение целей, проблемы в своей деятельности. Выдвижение версии, выбор средства достижения цели. Работа по плану, сверяясь с целью, нахождение и исправление ошибки, в т.ч. самостоятельно. 

Личностные

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

Основные понятия

  • понятия «жадный» алгоритм, минимальное остовное дерево, алгоритм Прима-Крускала;
  • программирование «жадного» алгоритма;
  • граф, ребро, дуга, дерево, цикл.

Межпредметные связи

 Экономика, математика

Ресурсы

интерактивная доска, мультимедийный проектор, ЭОР для интерактивной доски,   тестовые задания на ПК, приложения.

Этапы урока

Формируемые УУД

Деятельность учителя

Деятельность учащегося

Оргмомент

личностные

Приветствие

Настраиваются на урок

Целеполагание и мотивация

регулятивные

Прежде, чем мы начнем наш урок, хочу напомнить слова выдающегося немецкого философа и драматурга Г.Э.Лессинга «Спорьте, заблуждайтесь, ошибайтесь, но ради бога, размышляйте, и хотя и криво, да сами».

Я бы хотела, чтобы вы об этом помнили, не смущались, если что-то сразу не получится.

Актуализация знаний

регулятивные

Давайте вспомним, с какими основными понятиями и определениями вы познакомились при изучении темы «Графы».  Для этого предлагаю выполнить тест.

Пока идет выполнение теста, мы послушаем небольшое сообщение о семи мостах Кенигсберга. (Приложение 2)

Если учесть, что Эйлер родился в самом начале XVIII века (1707 г.), то конечно можно сделать вывод о том, что уже в те времена существовала теория графов . В настоящее время существует целый раздел науки о  Эйлеровых графах, циклах и цепях.

Итак, закончили выполнять тест, посмотрим на доску и выполним задание: на доске представлены три графа. Вам необходимо определить виды этих графов.

(неориентированный, орграф, взвешенный)

 В 10 классе мы учились решать задачи на поиск количества путей в графе. Это задание № 15 в ЕГЭ по информатике. Давайте вспомним, как мы это делали. Для этого  выполним следующие задание:.

(Ответ: 12)

Двое обучающихся выполняют тест. (Приложение 1)

Слушают выступление.

 

Выполняют задания на интерактивной доске.

постановка цели деятельности (постановка учебной задачи)

регулятивные

Задача. Предложите способ нахождения кратчайшего маршрута из города А в город F, если известна схема дорог между несколькими городами и расстояния между ними (дороги не прямые, поэтому неравенство треугольника может нарушаться).

Первая мысль – это конечно выбор кратчайших маршрутов до ближайшего города, в котором мы еще не были. Это путь А-С-Е-D-F=9. Какой алгоритм мы применили?

Рассмотрим еще одну задачу и попробуем также применить сформулированный алгоритм. К какому результату мы приходим?

Итак, применяя тот же алгоритм, мы пришли к выводу, что кратчайший путь равен 10.

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

Запишем тему урока с небольшой поправкой: «Жадные алгоритмы (задача Прима-Крускала)»

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

Итак, еще раз о решенных задачах: обе ли они дают оптимальное решение?

Какой вывод мы можем сделать о использовании жадного алгоритма при нахождении кратчайшего маршрута?

Однако есть такие задачи, в которых жадный алгоритм приводит к правильному решению. Одна из таких задач (ее называют задачей Прима-Крускала) формулируется так: Между какими городами нужно проложить линии связи, чтобы все города были связаны в одну систему и общая длина линий связи была наименьшей? (Приложение 3)

В теории графов эта задача называется задачей построения минимального остовного дерева, т.е. дерева связывающего все вершины. Остовное дерево для связного графа с N вершинами имеет N-1 ребро.

Рассмотрим жадный алгоритм решения этой задачи предложенный Крускалом:

  1. начальное дерево – пустое
  2. на каждом шаге добавляется ребро минимального веса, которое ещё не входит в дерево и не приводит к появлению цикла

Здесь такая последовательность добавления ребер: CE, DF, AB, EF, AC. После добавления ребра EF, следующее минимальное ребро DE, но оно образует цикл с ребрами DF и EF, поэтому не включено в дерево.

Предположения детей.

На каждом шаге многоходового процесса выбирать наилучший в данный момент.

А-В-D-F=10

Предположения детей (Алгоритм нахождения кратчайшего расстояния между вершинами)

В экономике для достижения максимальной прибыли при наименьших затратах.

Нет, во второй задаче есть более короткий маршрут А-С-Е-F-7.

Жадный алгоритм не всегда дает оптимальное решение.

Физкультминутка (Приложение 4)

Выполняют  Аутомануальный комплекс

Построение проекта выхода из затруднения («открытие» детьми нового знания

Реализация построенного проекта

коммуникативные

Познавательные

При программировании этого алгоритма возникает вопрос: как определить, что ребро еще не включено в дерево и не образует цикла в нем? Существует очень красивое решение этой проблемы, основанное на «раскраске» вершин.

Сначала все вершины раскрашиваются в разные цвета (т.е. им присваиваются разные числовые коды):

for i:=1 to N do col[i]:= i;

N – количество вершин;

сol -   целочисленный массив с индексами от 1 до N.

В цикле  N-1 раз (столько ребер нужно включить в дерево) выполняем следующие операции:

  • ищем ребро минимальной длины среди всех рёбер, концы которых окрашены в разные цвета;
  • найденное ребро (iMin,jMin) добавляется в список выбранных, и все вершины, имеющие цвет col[jMin], перекрашиваются в цвет col[iMin].

Фрагменты программы:

{Данные}

const N = 6;

var   { весовая матрица } 

    W: array[1..N,1..N] of integer;

      { цвета вершин } 

    col: array[1..N] of integer;

      { номера вершин для выбранных ребер } 

    ostov: array[1..N-1,1..2] of integer;

    i, j, k, iMin, jMin, min: integer;

{Вывод результата – ребер из массива  ostov }

for i:=1 to N-1 do

  writeln('(', ostov[i,1], ',',

               ostov[i,2], ')');        

{Основной цикл программы}

for k:= 1 to N-1 do begin

    { поиск ребра с минимальным весом }

  min:= MaxInt;

{ MaxInt – константа для максимального значения типа  Integer (32767) }

  for i:= 1 to N do

    for j:= 1 to N do

      if (col[i] <> col[j]) and

         (W[i,j] < min) then begin

        iMin:= i; jMin:= j; min:= W[i,j]

      end;   { добавление ребра в список выбранных}

  ostov[k,1]:= iMin;

  ostov[k,2]:= jMin;   c:= col[jMin];

    { перекрашивание вершин }

for i:= 1 to N do

    if col[i] =  c then

      col[i]:= col[iMin]

end;

Здесь:

W – целочисленная матрица размером NxN (индексы строк и столбцов начинаются с 1);

ostov – целочисленный массив из N-1 строк и двух столбцов для хранения выбранных ребер (для каждого ребра хранятся номера двух вершин, которое оно соединяет).

Слушают учителя

Комментарии в фигурных скобках должны давать учащиеся.

закрепление

познавательные

Задание:  Используя алгоритм Прима-Крускала найдите на графе минимальное остовное дерево. Является ли оно универсальным?

          Ответ (решение не универсально)

 

Ответ:

Самостоятельно:   (Приложение 5)

Задание: используя алгоритм Прима-Крускала найдите на графе минимальное остовное дерево.  Является ли оно универсальным?

http://urban-sanjoo.narod.ru/kruskal/g_kruskal00.gif

Ответ: (является)

http://urban-sanjoo.narod.ru/kruskal/g_kruskal07.gif

Задача: имеется n городов, которые нужно объединить в единую телефонную сеть. Для этого достаточно проложить (n-1) телефонных линий между городами. Как соединить города так, чтобы суммарная стоимость соединений (телефонного кабеля) была минимальна?

Ответ: (не является)

 

 Суммарный вес дерева равен 37. Это минимальное остовное дерево не уникально: удалением ребра (c,d) и добавлением ребра (a,b) получается новое минимальное остовное дерево.

Задача: удалите лишние ребра и получите минимальное остовное дерево.

Ответ:http://files3.vunivere.ru/workbase/00/01/16/69/images/image004.gif

http://files3.vunivere.ru/workbase/00/01/16/69/images/image001.gifhttp://files3.vunivere.ru/workbase/00/01/16/69/images/image001.gifhttp://files3.vunivere.ru/workbase/00/01/16/69/images/image001.gifhttp://files3.vunivere.ru/workbase/00/01/16/69/images/image001.gifhttp://files3.vunivere.ru/workbase/00/01/16/69/images/image001.gifhttp://files3.vunivere.ru/workbase/00/01/16/69/images/image001.gifhttp://files3.vunivere.ru/workbase/00/01/16/69/images/image001.gif

        

        

С графами связаны некоторые классические задачи. Самая известная из них – задача коммивояжёра.

Коммивояжёр (фр. commis voyageur) — бродячий торговец. Задача коммивояжёра — важная задача транспортной логистики, отрасли, занимающейся планированием транспортных перевозок. Коммивояжёру, чтобы распродать нужные и не очень нужные в хозяйстве товары, следует объехать n пунктов и в конце концов вернуться в исходный пункт. Требуется определить наиболее выгодный маршрут объезда. В качестве меры выгодности маршрута (точнее говоря, невыгодности) может служить суммарное время в пути, суммарная стоимость дороги, или, в простейшем случае, длина маршрута. 

Выполняют задание

Сообщение учащегося, владеющего навыками решения задачи.

(Приложение 6)

Домашнее задание

§ 44 стр. 109-112, № 2 стр. 119

Дополнительно: сформулируйте критерий минимальности остова.

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

записывают домашнее задание

Включение в систему знаний и повторение.

Рефлексия.

коммуникативные

Подведем итоги нашего урока.  

Предлагаю устно закончить следующие предложения.

"На сегодняшнем уроке я понял, я узнал, я разобрался…";

 "Я похвалил бы себя…";

  "После урока мне захотелось…";

  "Сегодня мне удалось…";

 "Я сумел…";

"Было интересно…";

"Было трудно…";

"Я понял, что…";

"Теперь я могу…";

"Я научился…".

Закончить наш урок хочу словами Шарля де Голля, французского генерала второй мировой войны и выдающегося политика: "Всегда выбирайте самый трудный путь, на нем вы не встретите конкурентов!".

Ответы детей



Предварительный просмотр:

Задача коммивояжёра

Коммивояжер (бродячий торговец) должен выйти из города 1 и, посетив по разу в неизвестном порядке города 2,3,...N, вернуться обратно в город 1. В каком порядке надо обходить города, чтобы путь коммивояжера был кратчайшим?

Эта задача оказалась одной из самых сложных задач оптимизации. По сей день известно только одно надежное решение – полный перебор вариантов, число которых равно факториалу значения N-1. Это число с увеличением N растет очень быстро, быстрее чем любая степень N. Уже для N=20 такое решение требует огромного времени вычислений: компьютер, проверяющий 1000 вариантов в секунду, будет решать задачу «в лоб» около четырех миллионов лет. Поэтому математики прилагали большие усилия для того, чтобы сократить перебор – не рассматривать те варианты, которые заведомо не дают лучших результатов, чем уже полученные. В реальных ситуациях нередко оказываются полезными приближенные решения, которые не гарантируют точного оптимального решения, но позволяют получить приемлемый вариант.

Например, к приближенным методам относят:

  1. метод случайных перестановок (Matlab)
  2. генетические алгоритмы
  3. метод муравьиных колоний и т.д.

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



Предварительный просмотр:

Самостоятельно:

Задача: примените алгоритм Прима-Крускала для получения минимального остовного дерева:

http://urban-sanjoo.narod.ru/kruskal/g_kruskal00.gif

Задача: имеется n городов, которые нужно объединить в единую телефонную сеть. Для этого достаточно проложить (n-1) телефонных линий между городами. Как соединить города так, чтобы суммарная стоимость соединений (телефонного кабеля) была минимальна?

Задача: удалите лишние ребра и получите минимальное остовное дерево.

http://files3.vunivere.ru/workbase/00/01/16/69/images/image001.gif

        



Предварительный просмотр:

Аутомануальный комплекс (массаж) 

Разогреть ладони энергичным потиранием. Указательными пальцами осуществлять вкручивающие движения по часовой и против часовой стрелке – 6-8 раз в каждую сторону. 
• Точка на лбу между бровями. 
• По краям крыльев носа. 
• В среднюю линию между нижней губой и верхним краем подбородка. 
• В височной ямке (парные). 
• В области козелка (парные). 
• Чуть выше роста волос под основанием черепа. 


Предварительный просмотр:


Подписи к слайдам:

Слайд 1

Задача Прима-Крускала 1 Задача . Между какими городами нужно проложить линии связи, чтобы все города были связаны в одну систему и общая длина линий связи была наименьшей? ( минимальное остовное дерево ) 4 B 2 1 2 9 7 8 1 3 D E F A C Алгоритм Крускала: начальное дерево – пустое на каждом шаге добавляется ребро минимального веса, которое ещё не входит в дерево и не приводит к появлению цикла Лучшее решение! !

Слайд 2

Раскраска вершин 2 4 B 2 1 2 9 7 8 1 3 D E F A C ищем ребро минимальной длины среди всех рёбер, концы которых окрашены в разные цвета ; найденное ребро (iMin,jMin) добавляется в список выбранных, и все вершины, имеющие цвет col[jMin] , перекрашиваются в цвет col[iMin] . Сделать N-1 раз: for i:= 1 to N do col [ i ]:= i ; каждой вершине свой цвет

Слайд 3

Раскраска вершин 3 const N = 6 ; var { весовая матрица } W: array[ 1 ..N, 1 ..N] of integer ; { цвета вершин } col : array[ 1 ..N] of integer ; { номера вершин для выбранных ребер } ostov : array[ 1 ..N - 1 , 1 .. 2 ] of integer ; i , j, k, iMin , jMin , min: integer ; Данные: Вывод результата: for i:= 1 to N- 1 do writeln( '(' , ostov[i, 1 ], ',' , ostov[i, 2 ], ')' );

Слайд 4

Раскраска вершин 4 for k:= 1 to N- 1 do begin { поиск ребра с минимальным весом } min:= MaxInt ; for i := 1 to N do for j:= 1 to N do if ( col [ i ] <> col [j]) and (W[ i,j ] < min) then begin iMin := i ; jMin := j; min:= W[ i,j ] end; ostov [k, 1 ]:= iMin ; { добавление ребра } ostov [k, 2 ]:= jMin ; c:= col [ jMin ]; for i := 1 to N do { перекрашивание вершин } if col [ i ] = c then col [ i ]:= col [ iMin ] end;



Предварительный просмотр:

ЗАДАЧА О СЕМИ МОСТАХ КЕНИГСБЕРГА

Известно, что великий швейцарский математик Эйлер создал целое направление науки, решая задачу о семи кенигсбергских мостах. Существует легенда, что жители Кенигсберга любили прогуливаться по улицам трех "слившихся" в единое целое средневековых городов: Альштадта, Лебенихта и Кнайпхофа - но терпеть не могли зря топтать свои башмаки. А города эти были соединены между собой семью мостами. И вот будто бы экономные горожане однажды задумались: а можно ли пройти по всем мостам так, чтобы на каждом из них побывать лишь один раз и вернуться к месту, откуда начал прогулку?

Эйлера задача заинтересовала. "Никто еще до сих пор не смог это проделать, но никто и не доказал, что это невозможно... Для решения недостаточны ни геометрия, ни алгебра, ни комбинаторское искусство", - так писал он своему коллеге, итальянскому математику и инженеру...

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

На упрощённой схеме части города (графе) мостам соответствуют линии (дуги графа), а частям города — точки соединения линий (вершины графа). В ходе рассуждений Эйлер пришёл к следующим выводам:http://lmatrix.ru/uploads/images/130380594910.jpg

 

Число нечётных вершин (вершин, к которым ведёт нечётное число рёбер) графа должно быть чётно. Не может существовать граф, который имел бы нечётное число нечётных вершин.

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

Граф с более чем двумя нечётными вершинами невозможно начертить одним росчерком.

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

Созданная Эйлером теория графов нашла очень широкое применение: например, её используют при изучении транспортных и коммуникационных систем, в частности, для маршрутизации данных в Интернете.

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

Третье решение придумали речники. За небольшую плату они предлагают перевезти всех, кому не хватает моста для решения задачки.

Источник: http://www.liveinternet.ru/users/vl866911/post254869616/   


Предварительный просмотр:


Подписи к слайдам:

Слайд 1

мин. 5 Время тестирования Начать тестирование 6 Всего заданий Введите фамилию и имя Тест п о теме Графы

Слайд 2

Далее 1 Задание 1 бал. 1 2 3 Что такое граф? Это объект, в котором вершины связаны между собой по принципу «многие ко многим» Это набор узлов (вершин) и связей между ними (ребер) Это информация об узлах и связях между ними

Слайд 3

Далее 2 Задание 1 бал. 1 2 3 Как называется таблица, в которой хранится информация об узлах и связях графа? Двумерная матрица Весовая матрица Матрица смежности

Слайд 4

Далее 3 Задание 1 бал. Выберите все правильные ответы! 1 2 3 4 Что означает единица на главной диагонали смежной матрицы? Ребро, которое начинается и заканчивается в одной и той же вершине Между узлами нет связи Между узлами есть связь Имеется петля

Слайд 5

Далее 4 Задание 1 бал. Введите ответ: Как называется граф, в котором между парой узлов существует путь – последовательность ребер, по которым можно перейти от одного узла к другому?

Слайд 6

Далее 5 Задание 1 бал. 1 2 3 Чем отличается орграф от неориентированного графа? Матрицей смежности Вместо ребер используют дуги Весом ребра

Слайд 7

Итоги 6 Задание 1 бал. 1 2 3 4 Какой граф называют взвешенным? Построенный с помощью дуг Построенный с помощью ребер На ребрах несущий дополнительную информацию Неориентированный граф

Слайд 8

Затрачено времени Выход Снова бал. Всего заданий Ошибки в выборе ответов на задания: Набранных баллов Правильных ответов Оценка Подождите! Идет обработка данных Результаты тестирования


По теме: методические разработки, презентации и конспекты

Презентация к уроку по теме "Алгоритмы. Способы описания алгоритмов" 4 класс УМК Плаксин М.А.

Данная презентация может быть использована при изучении темы "Алгоритмы" в 4 классе.  УМК М.А. Плаксин. Включает вопросы и задания на повторение по темам "Черный ящик", "Исследование черного ящик...

Урок по теме "Алгоритм. Исполнители алгоритма"

Цель урока: Познакомить учащихся с понятиями «алгоритм», «исполнитель».Задачи урока: Образовательные: ·         Создать условия для формирования первичного пред...

9кл Зачет по теме «Запись вспомогательных алгоритмов на языке Паскаль. Управление и алгоритмы» + Задачи

Зачет по теме «Запись вспомогательных алгоритмов на  языке Паскаль. Управление и алгоритмы» состоит из теоретической части (14 вариантов по 10 вопросов ) и практической части (10 задач)...

Конспект урока по теме "Алгоритм. Свойства алгоритмов"

Конспект урока по теме "Алгоритм. Свойства алгоритмов". 9 класс....

Конспект урока по информатике "Алгоритмы работы с величинами. Решение задач."

Конспект урока для 9 класса "Алгоритмы работы с величинами. Решение задач". Шаги решения задачи на компьютере. Составление блок-схемы решения задачи. Составление программного кода на языке П...

Урок в МЭШ. Алгоритм. Исполнитель алгоритма.

Урок в МЭШАлгоритм. Исполнитель алгоритма....