Изменения

Перейти к: навигация, поиск

Алгоритм Прима

1113 байт добавлено, 19:52, 31 декабря 2011
Пример работы алгоритма
==Пример работы алгоритма==
[[Файл:Prim1.jpg|right|400px|thumb|Граф "звезда" с расставленными весами ребер ]]
Таблица соответствует работе алгоритма на графе с картинки. {| border="1" cellpadding="53" cellspacing="0" style="text-align:center" width=3070%
|-
|rowspan="21"|№ шага|colspan="5"|key[]состояние|rowspan="2"|p[]граф
|-
|style="background:#f9f9f9"|1|stylewidth="background:#f9f9f930%"|21) Получаем на вход граф, все вершины находятся в куче, ключи всех вершин <tex>inf</tex>.|stylewidth="background:#f9f9f9150%"|3key[] : [<tex>inf</tex>, <tex>inf</tex>, <tex>inf</tex>, <tex>inf</tex>, <tex>inf</tex>]|style="backgroundQ :#f9f9f9"|[1, 2, 3, 4|style="background:#f9f9f9"|, 5]
|вершина с минимальным ключом : <tex>-</tex>
|style="backgroundp[] :#f9f9f9"|1)|style="background:#FFFF00"|<tex>\infty </tex>|style="background:#FFFF00"|<tex>\infty </tex>|style="background:#FFFF00"|<tex>\infty </tex>|style="background:#FFFF00"|<tex>\infty </tex>|style="background:#FFFF00"|<tex>\infty </tex>|style="background:#f9f9f9"|<tex>-</tex>
edges[] : <tex>-</tex>
|[[Файл:Prim20.jpg|center|300px]]
|-
|style="background:#f9f9f9" width="30%"|2)Выбрали первую вершину пути(1). Поменяли ключ стартовой вершины на 0. Убрали ее из кучи, так как ее ключ минимален.|width="100%"|key[] : [<tex>0</tex>, <tex>inf</tex>, <tex>inf</tex>, <tex>inf</tex>, <tex>inf</tex>]Q : [2, 3, 4, 5] вершина с минимальным ключом : <tex>1</tex> ключ 0
|style="backgroundp[] :#FF0000"|0|style="background:#FFFF00"|<tex>\infty </tex>|style="background:#FFFF00"|<tex>\infty </tex>|style="background:#FFFF00"|<tex>\infty </tex>|style="background:#FFFF00"|<tex>\infty </tex>|style="background:#f9f9f9"|[1]
edges[]: <tex>-</tex>
|[[Файл:Prim21.jpg|center|300px]]
|-
|style="background:#f9f9f9" width="30%"|3)Смотрим на детей вершины (1). Расставляем им ключи. Находим в куче вершину с минимальным ключом(3). Удаляем ее из кучи, добавляем в ответ. |width="100%"|key[] : [0, <tex>inf</tex>, 7, 14, <tex>inf</tex>]Q : [2, 4, 5]
|style="backgroundвершина с минимальным ключом :#FF0000"|0|style="background:#FFFF00"|<tex>\infty </tex>|style="background:#FF0000"|3 с ключом 7|style="background:#FFFF00"|14|style="background:#FFFF00"|<tex>\infty </tex>
|style="backgroundp[] :#f9f9f9"|[1 , 3]
edges: [(1, 3)]
|[[Файл:Prim22.jpg|center|300px]]
|-
|style="background:#f9f9f9" width="30%"|4)Смотрим на детей вершины (3). Расставляем им ключи. Находим в куче вершину с минимальным ключом(2).Удаляем ее из кучи, добавляем в ответ. |width="100%"|key[] : [0, <tex>inf</tex>, 7, 14, 71]Q : [2, 5] вершина с минимальным ключом : 4 с ключом 14
|style="backgroundp[] :#FF0000"|0|style="background:#FFFF00"|<tex>\infty </tex>|style="background:#FF0000"|7|style="background:#FF0000"|14|style="background:#FFFF00"|71|style="background:#f9f9f9"|4 [1 , 3, 4]
edges: [(1, 3), (4, 1)]
|[[Файл:Prim23.jpg|center|300px]]
|-
|style="background:#f9f9f9" width="30%"|5)Смотрим на детей вершины (4). Расставляем им ключи. Находим в куче вершину с минимальным ключом(2).Удаляем ее из кучи, добавляем в ответ. |width="100%"|key[] : [0, 4, 7, 14, 71]Q :[5]
|style="backgroundвершина с минимальным ключом :#FF0000"|0|style="background:#FF0000"|2|style="background:#FF0000"|7|style="background:#FF0000"|14|style="background:#FFFF00"|71|style="background:#f9f9f9"|2 с ключом 4 1 3
p[] : [1, 3, 4, 2]
 
edges: [(1, 3), (4, 1), (4, 2)]
|[[Файл:Prim24.jpg|center|300px]]
|-
|style="background:#f9f9f9" width="30%"|6)Смотрим на детей вершины (2). Расставляем им ключи. Находим в куче вершину с минимальным ключом(5).Удаляем ее из кучи, добавляем в ответ. |width="100%"|key[] : [0, 4, 7, 14, 52]Q :[] вершина с минимальным ключом : 5 с ключом 52
|style="backgroundp[] :#FF0000"|0[1, 3, 4, 2, 5]|style="backgroundedges:#FF0000"|[(1, 3), (4, 1), (4, 2), (2, 5)] |style="background:#FF0000"|7|style="background:#FF0000"|14|style="background[[Файл:#FF0000"|71Prim25.jpg|style="background:#f9f9f9"center|5 2 4 1 3300px]]
|}
228
правок

Навигация