Presentation is loading. Please wait.

Presentation is loading. Please wait.

ГРАФЫ ИХ ПРЕДСТАВЛЕНИЕ В STL u Отделение программной инженерии группа 271 ПИ Антонова Н. А.

Similar presentations


Presentation on theme: "ГРАФЫ ИХ ПРЕДСТАВЛЕНИЕ В STL u Отделение программной инженерии группа 271 ПИ Антонова Н. А."— Presentation transcript:

1 ГРАФЫ ИХ ПРЕДСТАВЛЕНИЕ В STL u Отделение программной инженерии группа 271 ПИ Антонова Н. А.

2 G = множество вершин (vertices) |V|=N множество пар вершин – дуг (arcs) |E|=M ГРАФ

3 БИБЛИОТЕКА STL STANDARD TEMPLATE LIBRARY стандартная библиотека шаблонов Это библиотека шаблонов и функций С ++, включающая в себя различные контейнеры данных ( список, очередь, множество, отображение, хэш - таблица, очередь с приоритетами ) и базовые алгоритмы ( сортировка, поиск )

4 Последовательные Ассоциативные ( линейный список ) ( ключ – значение ) list vector deque … КОНТЕЙНЕРЫ map multimap set …

5 VECTOR – динамический массив –size() – возвращает текущий размер вектора –begin() – возвращает итератор, установленный на начало вектора –end() - возвращает итератор, установленный на конец вектора –push_back() – записывает значение в конец вектора –insert() – записывает значение непосредственно перед элементом, на который ссылается итератор –erase() – удаляет элемент из вектора –… vector iv; //пустой вектор int i; //счетчик for (i=0; i<10; i++) v[i] = i + ’a’; //заполнение //устанавливаем итератор в конец vector ::iterator p=v.end(); v.insert (p,3,’X’); //вставляем три символа Х в вектор //выводим на экран содержимое вектора for (i=0; i<v.size(); i++) cout<< v[i] << “ “; КОНТЕЙНЕРЫ

6 VECTOR – динамический массив –size() – возвращает текущий размер вектора –begin() – возвращает итератор, установленный на начало вектора –end() - возвращает итератор, установленный на конец вектора –push_back() – записывает значение в конец вектора –insert() – записывает значение непосредственно перед элементом, на который ссылается итератор –erase() – удаляет элемент из вектора –… на экране : a b c d e f g h i j X X X КОНТЕЙНЕРЫ

7 SET – упорядоченные уникальные значения ; MAP – ассоциативный контейнер : уникальный ключ – значение map m1; //ключ и значение – строковый тип //заполнение: ключ-значение хранится с помощью стандартного типа пары m1.insert(pair ("apple", "a small red fruit")); m1.insert(pair ("orange", "a small orange fruit")); m1["banana"] = "a long yellow fruit"; //заполнение //вывод на экран вариант 1 map ::iterator it = m1.begin(); for ( ; it != m1.end(); it++) { cout first second << endl; } //вывод на экран вариант 2 cout << m1["apple"] << endl; cout << m1["orange"] << endl; cout << m1["banana"] << endl; КОНТЕЙНЕРЫ

8 MAP – ассоциативный контейнер : уникальный ключ – значение на экране: apple: a small red fruit orange: a small orange fruit banana: a long yellow fruit a small red fruit a small orange fruit a long yellow fruit КОНТЕЙНЕРЫ

9 MULTIMAP – ключ может иметь несколько значений PRIORITY_QUEUE – очередь с приоритетами priority_queue pq; pq.push(1); //добавляем элемент pq.push(4); pq.push(2); cout << pq.top() << endl; // выводит '4' pq.pop(); // удаление элемента cout << pq.top() << endl; // выводит '2' pq.pop(); // удаление элемента cout << pq.top() << endl; // выводит '1' cout << pq.size() << endl; // выводит '1' КОНТЕЙНЕРЫ

10 Вершины, соединенные дугой, называются смежными Дуги, имеющие общую вершину, также называются смежными Дуга и любая из ее вершин называются инцидентными СМЕЖНОСТЬ и ИНЦИДЕНТНОСТЬ

11 ПРЕДСТАВЛЕНИЕ ГРАФОВ 1. Матрица смежности 2. Матрица инциденций 3. Структуры смежности 4. Массив дуг

12 Это двумерный массив размером NxN, где N – мощность множества вершин V (|V|=N) МАТРИЦА СМЕЖНОСТИ // двумерный массив #include typedef std::vector > Matrix; Matrix m;

13 МАТРИЦА ИНЦИДЕНЦИЙ Это двумерный массив размером Nx М, где N – мощность множества вершин V (|V|=N), М – мощность множества ребер (|E|=M) 12345678 110001000 200101000 300110000 401010001 500000001 610000010 700000110 800000100 901000000

14 Это одномерный массив размером N, где N – мощность множества вершин V (|V|=N). Элемент массива – указатель на начало списка, где храниться перечень вершин, смежных с рассматриваемой СТРУКТУРА СМЕЖНОСТИ struct node {int v; node* next; node (int x, node* t) { v = x; next = t; } }; typedef node* link; vector adj;

15 Это двумерный массив размером М x2, где М – мощность множества ребер Е (| Е |= М ) МАССИВ ДУГ //map #include typedef std::map Matrix; Matrix m;

16 Использование в прикладных задачах Географические карты и маршруты Расписания (scheduling) Web (гипертекст) Сети (networks) и т.д.

17 Сеть европейских железных дорог ПОИСК КРАТЧАЙШЕГО ПУТИ

18 ПУТЬ Путь – последовательность вершин, соединенных ребрами Длина пути – число ребер(невзвешенная) или сумма весов всех ребер (взвешенная), входящих в путь

19 ПРЕДСТАВЛЕНИЕ map > outgoing_services; map cities;

20 АЛГОРИТМ ДЕЙКСТРЫ Инициализация Метка начальной вершины полагается равной 0, метки остальных вершин — бесконечности (расстояния до них пока неизвестны) Шаг алгоритма Если все вершины посещены, алгоритм завершается В противном случае из еще не посещенных вершин выбирается вершина U, имеющая минимальную метку Рассматриваются все смежные к ней вершины. Для каждой из них определяется новая длина пути, равную сумме текущей метки U и длины ребра, их соединяющего Если полученная длина меньше метки новой вершины, заменим метку этой длиной Рассмотрев все такие вершины, пометим вершину U как посещенную и повторим шаг …

21

22 ОСНОВНЫЕ АЛГОРИТМЫ НА ГРАФАХ

23 Breadth-First Search Поиск в ширину метод анализа структуры графа, при котором каждый уровень полностью подвергается анализу до перехода к следующему уровню

24 Рассматриваются все вершины, связанные с текущей Выбирается та вершина, которая раньше была рассмотрена Структура данных – очередь

25

26

27

28 Depth-First Search Поиск в глубину метод анализа структуры графа, при котором узлы анализируются последовательно, по мере продвижения вглубь, а далее анализируются ближайшие к стартовому

29 Поиск начинается с некоторой фиксированной вершины v Рассматривается вершина u, смежная с v Если нет вершин, смежных с текущей, возврат к предыдущей (если эта вершина – v, то просмотр окончен) Структура данных – стек

30

31

32

33 СПАСИБО ЗА ВНИМАНИЕ !


Download ppt "ГРАФЫ ИХ ПРЕДСТАВЛЕНИЕ В STL u Отделение программной инженерии группа 271 ПИ Антонова Н. А."

Similar presentations


Ads by Google