Алгоритмы на графах Представление графов Построение остовного дерева Нахождение компонент смежности Перебор в глубину и в ширину.

Презентация:



Advertisements
Похожие презентации
9.Задана целочисленная матрица. Вывести N чисел - максимальные значения элементов для каждой строки, где N - количество строк матрицы
Advertisements

5.Дана матрица А и вектор Х соответствующих размерностей. Нечетные строки матрицы заменить элементами вектора Х. Результаты работы: n=4 m=
Массивы в Паскале. Создание массива: var a:array [1..5] of integer; i:integer; begin for i:=1 to 5 do begin write ('a[',i,']='); readln(a[i]); end; end.
Одномерные массивы Введение. I.Описание Массив – это фиксированное кол - во элементов одного и того же типа, объединенных одним именем, каждый элемент.
Задача о лабиринте Формулировка. Имеется прямоугольная матрица N x M, который задается лабиринт. Нули в матрице обозначают проход, минус единицы - стены.
Одномерный массив Turbo Pascal 9 класс. Объясните каждый шаг в программе. Что делает программа? Сколько раз срабатывает цикл? Var A : array [1..10] of.
Тема: Нахождение минимального и максимального элемента в массиве.
PROGRAM example1; const m=100; var a : ARRAY [1.. m] of INTEGER; i,k,n,q : INTEGER; BEGIN readln (n); randomize; WRITELN('Полученный массив:' ); FOR i.
3. Дана прямоугольная матрица, элементами которой являются целые числа. Поменять местами ее строки следующим образом: первую строку с последней, вторую.
29. Дан массив целых чисел. Найти индексы элементов, значения которых больше значения предыдущего элемента (на­чиная со второго). Program a29; Var i,n:integer;
Дан массив. Найти максимальный и минимальный элементы массива и поменять их местами. Выполнение программы Выполнение программы.
Внесите в таблицы значения переменной Х, которые она принимает на k-м шаге цикла в программе stepen _A_n при заданных значениях А и n: 1)A = 2, n = 6 2)
Пусть нам необходимо сформировать текстовый файл с помощью Паскаля, а затем переписать из данного файла во второй только те строки, которые начинаются.
Program wr_text; var f: text; st: integer; i:integer; begin assign(f,'l1.TXT'); rewrite(f); write('вводите поочередно числа, после ввода очередного числа.
1 Программирование на языке Паскаль Тема 2. Максимальный элемент массива.
Алгоритмические структуры 1.Линейный 2.Ветвление 3.Цикл.
Чтобы переваривать знания, Нужно поглощать их с аппетитом. А. Франс.
Решение задач с использованием массивов
Тема: «Понятие квадратная матрица» :17:47.
Тема: « Вставка- удаление элементов массива » :18:06.
Транксрипт:

Алгоритмы на графах Представление графов Построение остовного дерева Нахождение компонент смежности Перебор в глубину и в ширину

Представление графа Матрица смежности Матрица инцидентности Списки ребер, инцидентных каждой вершине Список ребер

a b c d e a b c d e a b c d e a b c d e Матрицы смежности и инцидентности a b c d e

a b c d e a b c d e Матрица смежности для взвешенного графа

Построение минимального остовного дерева Алгоритм Краскала Вход: список E рёбер графа, |V| = p Выход: минимальный остов T в виде множества T := 0 упорядочить E в порядке возрастания k:=1 for i:=1 to p-1 do while добавление ребра E k образует цикл в T do k:=k+1 end while T := T + E k end for Вход: граф G(V,E), заданный матрицей длин рёбер Выход: минимальный остов T T := V (пустой граф) while в T больше одного поддерева do взять поддерево найти к нему ближайшее добавить это ребро в T end while

Обход графа в глубину var n, nk :integer; c : array[1..100,1..100] of integer; s: array [1..100] of integer; procedure depth(x:integer); var i : integer; begin write(x:2); s[x]:=nk; for i:=1 to n do if c[x,i] > 0 then if s[i] = 0 then begin s[i]:=nk; depth(i); end; var i, j :integer; fi, fo : text; begin assign(fi,'input1.txt'); reset(fi); read (fi,n); for i:=1 to n do for j:=1 to n do read(fi,c[i,j]); close(fi); for i:=1 to n do s[i]:=0; nk:=1; depth(1); writeln; end.

Обход графа в ширину var n, k, i, j, nk :integer; c : array[1..100,1..100] of integer; s: array [1..100] of integer; o : array [1..100] of integer; procedure width(x:integer); var y,p : integer; begin o[1]:=x; k:=1; p:=0; s[x]:=nk; while pk do begin p:=p+1; y:=o[p]; for i:=1 to n do if c[y,i] > 0 then if s[i] = 0 then begin k:=k+1; o[k]:=i; s[i]:=nk; end; var fi, fo : text; begin assign(fi,'input1.txt'); reset(fi); read (fi,n); for i:=1 to n do for j:=1 to n do read(fi,c[i,j]); close(fi); for i:=1 to n do s[i]:=0; nk:=1; width(1); for i:=1 to n do write(o[i]:2); writeln; end.