Инфоурок Другое ПрезентацииПрезентация на тему Алгоритмы на графах: определение наличия циклов в графе

Презентация на тему Алгоритмы на графах: определение наличия циклов в графе

Скачать материал
Скачать материал "Презентация на тему Алгоритмы на графах: определение наличия циклов в графе"

Получите профессию

Фитнес-тренер

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Специалист по коллекторской деятельности

Описание презентации по отдельным слайдам:

  • Алгоритмы на графах
Определение наличия циклов в графе

Югов Иван Олегович
М...

    1 слайд


    Алгоритмы на графах
    Определение наличия циклов в графе

    Югов Иван Олегович
    МОУ Гимназия №10, г. Тверь

  • Домашнее заданиеКакое максимальное количество рёбер может быть в ориентирован...

    2 слайд

    Домашнее задание
    Какое максимальное количество рёбер может быть в ориентированном ациклическом графе с n вершинами?
    Может ли быть так, что правильным результатом топологической сортировки графа оказывается любой порядок его вершин?
    Решить задачу о производстве деталей с помощью DFS.
    Как использовать топологическую сортировку для определения наличия циклов в графе?

  • Циклы и топологическая сортировкаЕсли в графе есть циклы, то топологическая с...

    3 слайд

    Циклы и топологическая сортировка
    Если в графе есть циклы, то топологическая сортировка невозможна.
    Если граф ациклический, то можно выполнить топологическую сортировку.
    Как с помощью топологической сортировки определить наличие циклов в графе?
    Pascal
    Cycles := False;
    for i := 1 to n do
    for j := 1 to n do
    if A[i, j] and
    (order[j] > order[i]) then
    Cycles := True;
    C
    Cycles = FALSE;
    for(i = 0; i < n; i++)
    for(j = 0; j < n; j++)
    if(A[i, j] &&
    (order[j] > order[i]))
    Cycles = TRUE;

  • Поиск циклов в графеИспользуем DFS для нахождения графа.
Если из текущей верш...

    4 слайд

    Поиск циклов в графе
    Используем DFS для нахождения графа.
    Если из текущей вершины есть путь в серую вершину, то имеем цикл.
    a
    b
    c
    d
    Если в графе есть цикл, то почему DFS обязательно его найдёт?

  • Поиск циклов в графеРассмотрим цикл и момент, когда покидаем первую вершину в...

    5 слайд

    Поиск циклов в графе
    Рассмотрим цикл и момент, когда покидаем первую вершину в нём.
    ?
    ?
    ?
    X
    Y
    Возвращаться будем из вершины X в вершину Y, поочерёдно окрашивая вершины в цикле в чёрный цвет.

  • Поиск циклов в графеКак определить сам цикл?Сделаем стек. При заходе в вершин...

    6 слайд

    Поиск циклов в графе
    Как определить сам цикл?
    Сделаем стек. При заходе в вершину помещаем её в стек, при выходе — забираем её оттуда.
    массив stack длины n — стек вершин;
    sp — указатель вершины стека (число элементов в нём).
    Pascal
    sp := 0;

    Push(v):
    Inc(sp);
    stack[sp] := v;

    Pop:
    Dec(sp);
    C
    sp = 0;

    Push(v):
    stack[++sp - 1] = v;

    Pop:
    sp--;

  • Поиск циклов в графеPascal
for i := 1 to n do
 color[i] := WHITE;
rm := False...

    7 слайд

    Поиск циклов в графе
    Pascal
    for i := 1 to n do
    color[i] := WHITE;
    rm := False; found := False; DFS(1);

    DFS(v):
    color[v] := GRAY; Push(v);
    for <u - сосед v> do
    if not Found then
    if color[u] = WHITE then
    DFS(u)
    else
    if color[u] = GRAY then
    begin
    Found := True;
    cc := u; rm := True;
    end;
    if Found then
    <запомнить текущую вершину>;
    color[v] := BLACK; Pop;
    C
    for(i = 0; i < n; i++)
    color[i] = WHITE;
    rm = Found = FALSE; DFS(0);

    DFS(v):
    color[v] = GRAY; Push(v);
    for(<u - сосед v>)
    if(!Found)
    if(color[u] == WHITE)
    DFS(u);
    else
    if(color[u] == GRAY)
    {
    rm = Found = TRUE;
    cc = u;
    };
    if(Found)
    <запомнить текущую вершину>;
    color[v] = BLACK; Pop;

  • Поиск циклов в графеКак запомнить все вершины, из которых выходим?Сделаем вто...

    8 слайд

    Поиск циклов в графе
    Как запомнить все вершины, из которых выходим?
    Сделаем второй стек. Если цикл найден, то помещаем во второй стек все покидаемые вершины, пока не встретим вершину cc.
    массив stack2 длины n — стек вершин в прямом порядке;
    sp2 — указатель вершины второго стека.
    Pascal
    sp2 := 0;

    <запомнить текущую вершину>:
    if rm then
    begin
    rm := rm and (v <> cc);
    Inc(sp2); stack2[sp2] := v;
    end;
    C
    sp2 = 0;

    <запомнить текущую вершину>:
    if(rm)
    {
    rm &= v != cc;
    stack[++sp - 1] = v;
    };

  • Поиск циклов в графеВ первой строке файла input.txt заданы целые n и m — соот...

    9 слайд

    Поиск циклов в графе
    В первой строке файла input.txt заданы целые n и m — соответственно число вершин и число рёбер ориентированного графа (1 ≤ n ≤ 10 000, 0 ≤ m ≤ 50 000). В следующих m строках файла заданы пары номеров вершин, соединённых рёбрами.
    В файл output.txt вывести последовательность номеров вершин, соответствующих любому циклу в графе. Если граф ациклический, то вывести 0.
    Ограничение по времени — 1 сек.
    Ограничение по памяти — 16 Мб.

  • Домашнее заданиеВерно ли утверждение, что из всех циклов в графе, проходящих...

    10 слайд

    Домашнее задание
    Верно ли утверждение, что из всех циклов в графе, проходящих через начальную вершину, DFS прежде всего находит цикл минимальной длины? Привести доказательство или контрпример.
    Решить задачу об определении наличия циклов в ориентированном графе проверкой рёбер: в выходной файл вывести 1, если в графе есть циклы, и 0 в противном случае.
    Выполнить п. 2 для неориентированного графа.
    Решить задачу об отыскании цикла в ориентированном графе с помощью DFS без использования второго стека.

Получите профессию

Няня

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 664 711 материалов в базе

Скачать материал

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

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 29.05.2020 146
    • PPTX 854 кбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Асибакова Гузель Тагировна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Асибакова Гузель Тагировна
    Асибакова Гузель Тагировна
    • На сайте: 3 года и 4 месяца
    • Подписчики: 0
    • Всего просмотров: 99347
    • Всего материалов: 232

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Экскурсовод

Экскурсовод (гид)

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

Библиотечно-библиографические и информационные знания в педагогическом процессе

Педагог-библиотекарь

300/600 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Сейчас обучается 487 человек из 71 региона
  • Этот курс уже прошли 2 328 человек

Курс повышения квалификации

Специалист в области охраны труда

72/180 ч.

от 1750 руб. от 1050 руб.
Подать заявку О курсе
  • Сейчас обучается 34 человека из 21 региона
  • Этот курс уже прошли 154 человека

Курс профессиональной переподготовки

Руководство электронной службой архивов, библиотек и информационно-библиотечных центров

Начальник отдела (заведующий отделом) архива

600 ч.

9840 руб. 5600 руб.
Подать заявку О курсе
  • Этот курс уже прошли 25 человек

Мини-курс

Возрастные кризисы

4 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 30 человек из 17 регионов
  • Этот курс уже прошли 18 человек

Мини-курс

Продвижение: от бесплатной рекламы до постоянных клиентов

3 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 47 человек из 25 регионов
  • Этот курс уже прошли 18 человек

Мини-курс

Эффективные коммуникационные стратегии в образовательной среде: от управления до мотиваци

4 ч.

780 руб. 390 руб.
Подать заявку О курсе