Презентация Основы программирования. Представление графов онлайн

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Основы программирования. Представление графов абсолютно бесплатно. Урок-презентация на эту тему содержит всего 22 слайда. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Основы программирования. Представление графов



Оцените!
Оцените презентацию от 1 до 5 баллов!
  • Тип файла:
    ppt / pptx (powerpoint)
  • Всего слайдов:
    22 слайда
  • Для класса:
    1,2,3,4,5,6,7,8,9,10,11
  • Размер файла:
    149.10 kB
  • Просмотров:
    82
  • Скачиваний:
    0
  • Автор:
    неизвестен



Слайды и текст к этой презентации:

№1 слайд
Основы программирования
Содержание слайда: Основы программирования Представление графов

№2 слайд
Графы Граф задается двумя
Содержание слайда: Графы Граф задается двумя множествами: вершин и ребер. Каждое ребро соединяет две вершины, т.е. может быть задано парой имен (номеров) вершин. Условно можно говорить, что ребро ab определяет возможность перехода из вершины a в вершину b. В неориентированном графе задание ребра ab определяет 2 возможных перехода: из a в b и из b в a. В ориентированном графе задание дуги ab определяет только переход из a в b. Обратный переход возможен если задана также дуга ba. Графы часто представляют графически: точки (вершины) соединяют отрезками линий (ребрами) или стрелками (дугами ориентированного графа).

№3 слайд
Графическое представление
Содержание слайда: Графическое представление Неориентированный Ориентированный f e d f e d a b c a b c Существует несколько способов задания графа: матрица смежности определяет для всех пар вершин соединяются ли они ребрами (дугами) списки смежных вершин определяют для каждой вершины, с какими вершинами она связана матрица инцидентности определяет инцидентность всех вершин ребрам (используется очень редко) матрица весов – аналог матрицы смежности (вместо единиц и нулей задаются веса ребер массив ребер или дуг (массив пар вершин).

№4 слайд
Матрицы смежности
Содержание слайда: Матрицы смежности Неориентированный Ориентированный f e d f e d a b c a b c a b c d e f a b c d e f a 0 1 0 0 1 1 a 0 0 0 0 1 1 b 1 0 1 0 1 1 b 1 0 0 0 1 0 c 0 1 0 0 0 0 c 0 1 0 0 0 0 d 0 0 0 0 0 0 d 0 0 0 0 0 0 e 1 1 0 0 0 0 e 0 0 0 0 0 0 f 1 1 0 0 0 0 f 0 1 0 0 0 0 Очевидно, что в программах используются не имена, а номера вершин графа.

№5 слайд
Списки смежных вершин
Содержание слайда: Списки смежных вершин Неориентированный Ориентированный f e d f e d a b c a b c a b-e-f a e-f b a-c-e-f b a-e c b c b d d e a-b e f a-b f b В отличие от матрицы смежности списки содержат только смежные вершины.

№6 слайд
Матрицы инцидентности
Содержание слайда: Матрицы инцидентности Неориентированный Ориентированный f e d f e d a b c a b c a b c d e f a b c d e f ab 1 1 0 0 0 0 ba 1 0 0 0 0 0 bc 0 1 1 0 0 0 cb 0 0 1 0 0 0 ae 1 0 0 0 1 0 ae 1 0 0 0 0 0 af 1 0 0 0 0 1 af 1 0 0 0 0 0 be 0 1 0 0 1 0 be 0 1 0 0 0 0 fb 0 1 0 0 0 1 fb 0 0 0 0 0 1 В программах используются не имена, а номера вершин и ребер графа.

№7 слайд
Матрицы весов
Содержание слайда: Матрицы весов Неориентированный Ориентированный f e d f e d 3 6 3 3 6 3 6 2 6 2 a 4 b c a 4 b c a b c d e f a b c d e f a ∞ 4 ∞ ∞ 6 3 a ∞ ∞ ∞ ∞ 6 3 b 4 ∞ 2 ∞ 3 6 b 4 ∞ ∞ ∞ 3 ∞ c ∞ 2 ∞ ∞ ∞ ∞ c ∞ 2 ∞ ∞ ∞ ∞ d ∞ ∞ ∞ ∞ ∞ ∞ d ∞ ∞ ∞ ∞ ∞ ∞ e 6 3 ∞ ∞ ∞ ∞ e ∞ ∞ ∞ ∞ ∞ ∞ f 3 6 ∞ ∞ ∞ ∞ f ∞ 6 ∞ ∞ ∞ ∞ Бесконечные веса используются, т.к. обычно требуется найти объекты с минимальным весом (пути).

№8 слайд
Массивы ребер дуг
Содержание слайда: Массивы ребер (дуг) Неориентированный Ориентированный f e d f e d a b c a b c a b b a b c c b a f a f a e a e f b f b b e b e Массив ребер удобно использовать для ввода.

№9 слайд
Массивы ребер дуг с весами
Содержание слайда: Массивы ребер (дуг) с весами Неориентированный Ориентированный f e d f e d 3 6 3 3 6 3 6 2 6 2 a 4 b c a 4 b c a b 4 b a 4 b c 2 c b 2 a f 3 a f 3 a e 6 a e 6 f b 6 f b 6 b e 3 b e 3 Списки смежных вершин взвешенного графа содержат пары «номер смежной вершины, вес ребра».

№10 слайд
Классы для представления
Содержание слайда: Классы для представления графов Мы будем использовать 3 способа представления графа: матрицей смежности, списками смежных вершин и матрицей весов. Для этого мы создадим, соответственно, классы MGraph, LGraph, WGraph с набором базовых методов и будем добавлять к ним дополнительные методы, реализующие некоторые алгоритмы на графах.

№11 слайд
Класс MGraph Класс для
Содержание слайда: Класс MGraph Класс для представления графа с помощью матрицы смежности: class MGraph { bool **mat; // матрица смежности int vernum; // число вершин bool oriented; // true - орграф public: MGraph(int vnum, bool orient); ~MGraph(); void input_edges(); bool is_oriented() { return oriented; } int get_vernum() { return vernum; } bool is_edge(int a, int b); };

№12 слайд
Конструктор и деструктор
Содержание слайда: Конструктор и деструктор MGraph MGraph::MGraph(int vnum, bool orient) { mat = new bool* [vnum]; for (int i = 0; i < vnum; i++) mat[i] = new bool[n]; vernum = vnum; oriented = orient; } MGraph::~MGraph() { for (int i = 0; i < vernum; i++) delete [] mat[i]; delete [] mat; }

№13 слайд
Ввод ребер дуг для MGraph
Содержание слайда: Ввод ребер (дуг) для MGraph void MGraph::input_edges() { int i, j; for (i = 0; i < vernum; i++) for (j = 0; j < vernum; j++) mat[i][j] = false; while (true) { cin >> i >> j; if (i < 0 || i >= vernum) return; if (j < 0 || j >= vernum) return; mat[i][j] = true; if (!oriented) mat[j][i] = true; } }

№14 слайд
Проверка существования ребра
Содержание слайда: Проверка существования ребра MGraph bool MGraph::is_edge(int a, int b) { if (a < 0 || a >= vernum) return false; if (b < 0 || b >= vernum) return false; return mat[a][b]; }

№15 слайд
Класс LGraph Класс для
Содержание слайда: Класс LGraph Класс для представления графа с помощью списков смежных вершин: class LGraph { List *lst; // списки смежных вершин int vernum; // число вершин bool oriented; // true - орграф public: LGraph(int vnum, bool orient); ~LGraph(); void input_edges(); bool is_oriented() { return oriented; } int get_vernum() { return vernum; } bool is_edge(int a, int b); };

№16 слайд
Конструктор и деструктор
Содержание слайда: Конструктор и деструктор LGraph LGraph::LGraph(int vnum, bool orient) { lst = new List[vnum]; vernum = vnum; oriented = orient; } LGraph::~LGraph() { delete [] lst; }

№17 слайд
Ввод ребер дуг для LGraph
Содержание слайда: Ввод ребер (дуг) для LGraph void LGraph::input_edges() { int i, j; for (i = 0; i < vernum; i++) lst[i].clear(); while (true) { cin >> i >> j; if (i < 0 || i >= vernum) return; if (j < 0 || j >= vernum) return; lst[i].push_back(j); if (!oriented) lst[j].push_back(i); } }

№18 слайд
Проверка существования ребра
Содержание слайда: Проверка существования ребра LGraph bool LGraph::is_edge(int a, int b) { if (a < 0 || a >= vernum) return false; if (b < 0 || b >= vernum) return false; if (lst[a].find(b) >= 0) return true; return false; }

№19 слайд
Класс WGraph Класс для
Содержание слайда: Класс WGraph Класс для представления взвешенного графа с помощью матрицы весов: #define INF 1e30 class WGraph { double **mat; // матрица весов int vernum; // число вершин bool oriented; // true - орграф public: WGraph(int vnum, bool orient); ~WGraph(); void input_edges(); bool is_oriented() { return oriented; } int get_vernum() { return vernum; } double edge_weight(int a, int b); };

№20 слайд
Конструктор и деструктор
Содержание слайда: Конструктор и деструктор WGraph WGraph::WGraph(int vnum, bool orient) { mat = new double* [vnum]; for (int i = 0; i < vnum; i++) mat[i] = new double[n]; vernum = vnum; oriented = orient; } WGraph::~WGraph() { for (int i = 0; i < vernum; i++) delete [] mat[i]; delete [] mat; }

№21 слайд
Ввод ребер дуг с весами для
Содержание слайда: Ввод ребер (дуг) с весами для WGraph void WGraph::input_edges() { int i, j; double w; for (i = 0; i < vernum; i++) for (j = 0; j < vernum; j++) mat[i][j] = INF; while (true) { cin >> i >> j >> w; if (i < 0 || i >= vernum) return; if (j < 0 || j >= vernum) return; mat[i][j] = w; if (!oriented) mat[j][i] = w; } }

№22 слайд
Получение веса ребра WGraph
Содержание слайда: Получение веса ребра WGraph double WGraph::edge_weight(int a, int b) { if (a < 0 || a >= vernum) return INF; if (b < 0 || b >= vernum) return INF; return mat[a][b]; }

Скачать все slide презентации Основы программирования. Представление графов одним архивом:
Похожие презентации