Теория графов

Содержание

Слайд 2

Примеры применения графов в реальной жизни

Примеры применения графов в реальной жизни

Слайд 3

Примеры применения графов в реальной жизни

Примеры применения графов в реальной жизни

Слайд 4

Примеры применения графов в реальной жизни

Примеры применения графов в реальной жизни

Слайд 5

Примеры применения графов в реальной жизни

Примеры применения графов в реальной жизни

Слайд 6

Примеры применения графов в реальной жизни

Примеры применения графов в реальной жизни

Слайд 7

Примеры применения графов в реальной жизни

Примеры применения графов в реальной жизни

Слайд 8

Граф – конечное множество вершин и множество ребер

1

2

3

4

5

a

b

c

d

e

g

Граф – конечное множество вершин и множество ребер 1 2 3 4

Слайд 9

Ориентированный граф

Ориентированный граф

Слайд 10

Первая теорема теории графов
Сумма степеней всех вершин равна удвоенному числу ребер в

Первая теорема теории графов Сумма степеней всех вершин равна удвоенному числу ребер в графе
графе

Слайд 11

Задача
Найти максимальное число ребер в простом графе, если у него n вершин

Задача Найти максимальное число ребер в простом графе, если у него n вершин

Слайд 12

Задача
Найти максимальное число ребер в простом графе, если у него n вершин
Решение:
M

Задача Найти максимальное число ребер в простом графе, если у него n
– число ребер

 

 

Слайд 13

«Лемма о рукопожатиях»
В любом графе число вершин нечетной степени - четно

«Лемма о рукопожатиях» В любом графе число вершин нечетной степени - четно

Слайд 14

«Лемма о рукопожатиях»
В любом графе число вершин нечетной степени - четно

«Лемма о рукопожатиях» В любом графе число вершин нечетной степени - четно

Слайд 15

Задача
Какая из представленных числовых последовательностей может быть последовательностью степеней вершин графа

2 2

Задача Какая из представленных числовых последовательностей может быть последовательностью степеней вершин графа
2 1
3
5 2 2 1
8 6 5 4 4 4 4 4 4 3 1 1 1 1 1 1 1 1 1 1 1
2
8 6 5 4 4 4 4 4 4 3 1 1 1 1 1 1 1 1 1 1
5 4 3 3
2 2 1 1

Слайд 16

Путь в графе
– это последовательность ребер, в которой конец одного ребра

Путь в графе – это последовательность ребер, в которой конец одного ребра является началом следующего ребра
является началом следующего ребра

Слайд 17

Связный граф

Граф называется связным если между любыми двумя его вершинами существует

Связный граф Граф называется связным если между любыми двумя его вершинами существует
маршрут. В противном случае граф называется несвязным.

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

Слайд 20

Определите, какие графы являются связными, а какие нет

Определите, какие графы являются связными, а какие нет

Слайд 21

Способы задания графа в памяти ПК

Способы задания графа в памяти ПК

Слайд 22

Матрица смежности
Неориентированный граф

Матрица смежности Неориентированный граф

Слайд 23

Матрица смежности
Ориентированный граф

1

2

5

4

3

Матрица смежности Ориентированный граф 1 2 5 4 3

Слайд 24

Списки смежности
Для каждой вершины хранится список w[i] смежных с ней вершин

1

2

3

4

5

w[1]=[2, 3,

Списки смежности Для каждой вершины хранится список w[i] смежных с ней вершин
4]
w[2]=[1, 4, 5]
w[3]=[1, 4]
w[4]=[1, 2, 3, 5]
w[5]=[2, 4]

w[1]=[2]
w[2]=[4, 5]
w[3]=[1, 4]
w[4]=[1, 3]
w[5]=[ ]

Слайд 25

Способы задания графа в Python

Способы задания графа в Python

Слайд 26

Задача №1 к §45
Напишите программу, которая строит списки смежности для каждой вершины

Задача №1 к §45 Напишите программу, которая строит списки смежности для каждой
графа на основе его матрицы смежности.

Входные данные
В первой строке вводится количество вершин графа N ( 1 ≤ N ≤ 1000 ). В следующих N строках записано по N чисел, разделённых пробелами – элементы матрицы смежности графа.
Выходные данные
Программа должна вывести списки смежности для каждой вершины графа в порядке возрастания их номеров. Номера вершин в каждом списке разделены пробелами. Нумерация начинается с единицы. Если из вершины не выходит ни одно ребро, вместо списка нужно вывести число 0.

Слайд 27

n=int(input())
ms=[[0] * n for i in range(n)]
for i in range(n):
m=map(int,input().split())
ms[i]=list(m)
for

n=int(input()) ms=[[0] * n for i in range(n)] for i in range(n):
i in range(n):
count=0
for j in range(n):
if ms[i][j]==1:
print(j+1,end=' ')
count+=1
if count==0:
print(0,end=' ')
print(sep=' ')

Слайд 28

Структуры данных и алгоритмы/Алгоритмы на графах/1. Основные понятия. Способы задания графов

В галактике

Структуры данных и алгоритмы/Алгоритмы на графах/1. Основные понятия. Способы задания графов В
"Milky Way" на планете "Neptune" есть N городов, некоторые из которых соединены дорогами. Император "Maximus" галактики "Milky Way" решил провести инвентаризацию дорог на планете "Neptune". Но, как оказалось, он не силен в математике, поэтому он просит вас сосчитать количество дорог.
Входные данные
В первой строке задается число N (0 ≤ N ≤ 100). В следующих N строках содержится по N чисел, каждое из которых является единичкой или ноликом. Причем, если в позиции (i,j) квадратной матрицы стоит единичка, то i-ый и j-ый города соединены дорогами, а если нолик, то не соединены.
Выходные данные
Выведите одно число – количество дорог на планете "Neptune".

Слайд 29

import numpy as np
n=int(input())
ms=[[0] * n for i in range(n)]
for i in

import numpy as np n=int(input()) ms=[[0] * n for i in range(n)]
range(n):
m=map(int,input().split())
ms[i]=list(m)
s=0
for i in range(n):
for j in range(i,n):
s+=ms[i][j]
print(s)

Слайд 30

import numpy as np
n=int(input())
ms=[[0] * n for i in range(n)]
for i in

import numpy as np n=int(input()) ms=[[0] * n for i in range(n)]
range(n):
m=map(int,input().split())
ms[i]=list(m)
print(ms)
ms2=np.array(ms)
print(ms2)
print(np.sum(ms2))

https://pythonworld.ru/numpy/2.html

Слайд 32

Задача «Светофорчики»
В подземелье M тоннелей и N перекрестков, каждый тоннель соединяет какие-то два перекрестка. Мышиный король

Задача «Светофорчики» В подземелье M тоннелей и N перекрестков, каждый тоннель соединяет
решил поставить по светофору в каждом тоннеле перед каждым перекрестком. Напишите программу, которая посчитает, сколько светофоров должно быть установлено на каждом из перекрестков. Перекрестки пронумерованы числами от 1 до N.
Входные данные
Первая строка входных данных содержит два числа N и M (0 < N ≤ 100, 0 ≤ M ≤ N*(N – 1)/2). В каждой из следующих M строк записаны по два числа i и j (1 ≤ i,j ≤ N), которые означают, что перекрестки i и j соединены тоннелем.
Выходные данные
Требуется вывести N чисел: k-ое число означает количество светофоров на k-ом перекрестке.
Примечание. Можно считать, что любые два перекрестка соединены не более, чем одним тоннелем. Нет тоннелей от перекрестка i до него самого.

Слайд 33

Примеры
входные данные
7 10
5 1
3 2
7 1
5 2
7 4
6 5
6 4
7 5
2 1
5

Примеры входные данные 7 10 5 1 3 2 7 1 5
3
выходные данные
3 3 2 2 5 2 3
Имя файла: Теория-графов.pptx
Количество просмотров: 27
Количество скачиваний: 0