Advertisement
Guest User

3 вопрос

a guest
Jun 20th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. Граф – конечное множество вершин и множеств рёбер. Каждому ребру сопоставлены 2 вершины – концы ребра.
  2. Представление графов в памяти
  3. Обычно используются 2 типа матриц: 1) матрица смежности 2) весовая матрица
  4. Матрица смежности – матрица размером N*N, где каждый эл-т с индексами i,j является логическим значением и показывает есть ли дуга между i и j.
  5. Весовая матрица – квадратичная матрица, где каждый эл-т с индексами i,j равен весу ребра из вершины i в j.
  6. Поиск в ширину
  7. Метод обхода графа и поиска пути в графе. Поиск в ширину работает путем последовательного просмотра отдельных уровней графа, начиная с узла-источника.
  8. Рассмотрим все рёбра графа (u,v), выходящие из узла u. Требуется найти длину кратчайшего пути от заданной вершины до другой. Частным случаем указанного графа является невзвешенный неориентированный граф, т.е. граф в котором для каждого ребра найдётся обратное, соединяющее те же вершины в другом направлении.
  9. Для алгоритма нам потребуется очередь и множество посещенных вершин was, которые изначально содержат вершину s. На каждом шагу алгоритм берет из начала очереди вершину v и добавляет все непосещенные смежные с v вершины в was и в конец очереди. Если очередь пуста, то алгоритм завершает работу.
  10. source – исходная вершина
  11. destination – конечная вершина
  12. G – граф, состоящий из списка вершин V и списка смежности E
  13. Q – очередь
  14. В поле d[u] хранится расстояние от source до u
  15. int BFS (G: (V,E), source: int, destination: int):
  16. d = int [|V|];
  17. fill(d,infinity);
  18. d[source] = 0;
  19. Q = 0;
  20. Q.push(source);
  21. While Q != 0 {
  22. U = Q.pop();
  23. for v: (u,v) in E
  24. if d[v] == infinity
  25. d[v] = d[u] + 1;
  26. Q.push(v);
  27. }
  28. Return d[destination];
  29.  
  30. Восстановление кратчайшего пути
  31. ЕСЛИ финишная ячейка помечена
  32. ТО
  33. перейти в финишную ячейку
  34. ЦИКЛ
  35. выбрать среди соседних ячейку, помеченную числом на 1 меньше числа в текущей ячейке
  36. перейти в выбранную ячейку и добавить её к пути
  37. ПОКА текущая ячейка — не стартовая
  38. ВОЗВРАТ путь найден
  39. ИНАЧЕ
  40. ВОЗВРАТ путь не найден
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement