ВУЗ:
Составители:
Рубрика:
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
комментариями
вер-
шина
массива
ребер
ostov
массива
вершин в
каркасе
nodes
сивов
ближайших вер-
шин alpha и
длин beta
11
Находим в массиве
beta минимальный
элемент среди тех, ко-
торые соответствуют
вершинам, не вклю-
ченным в nodes:
beta[4]=2. Включа-
ем вершину 4 в массив
nodes, а ребро <4, 5>
в каркас. Вершина 4
становится текущей.
4
{<1,2>,
<2,3>,
<3,6>,
<5, 6>,
<4, 5>}
{1, 2, 3,
6, 5, 4}
–
В каркас добавлены все вершины. Решение получено.
// определение функции построения каркаса минимального веса
// для графа с помощью алгоритма Прима
void Prim(Graph2 g, Edge*& ostov)
{
// выделение памяти под массив ребер каркаса
ostov=new Edge[g.n-1];
// выделение памяти под массив включенных
// в каркас вершин
int* nodes=new int[g.n];
// выделение памяти под вспомогательные массивы
// ближайших вершин из каркаса и расстояний до них
int* alpha=new int[g.n];
int* beta=new int[g.n];
// включение в каркас нулевой вершины и инициализация
// вспомогательных массивов согласно матрице смежности
nodes[0]=0;
int count=1, u=0, v, w, i, ii, min, flag;
for(v=1;v<g.n;v++)
if(g.a[0][v]!=MAX_INT)
{
// если v смежна нулевой вершине
alpha[v]=0;
beta[v]=g.a[0][v];
}
else
130
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
массива сивов
массива ближайших вер-
вер- вершин в
комментариями ребер шин alpha и
шина ostov каркасе
nodes длин beta
Находим в массиве
beta минимальный
элемент среди тех, ко- {<1,2>,
торые соответствуют
вершинам, не вклю- <2,3>,
ченным в nodes: {1, 2, 3, –
11 4 <3,6>,
6, 5, 4}
beta[4]=2. Включа-
<5, 6>,
ем вершину 4 в массив
nodes, а ребро <4, 5> <4, 5>}
в каркас. Вершина 4
становится текущей.
В каркас добавлены все вершины. Решение получено.
// определение функции построения каркаса минимального веса
// для графа с помощью алгоритма Прима
void Prim(Graph2 g, Edge*& ostov)
{
// выделение памяти под массив ребер каркаса
ostov=new Edge[g.n-1];
// выделение памяти под массив включенных
// в каркас вершин
int* nodes=new int[g.n];
// выделение памяти под вспомогательные массивы
// ближайших вершин из каркаса и расстояний до них
int* alpha=new int[g.n];
int* beta=new int[g.n];
// включение в каркас нулевой вершины и инициализация
// вспомогательных массивов согласно матрице смежности
nodes[0]=0;
int count=1, u=0, v, w, i, ii, min, flag;
for(v=1;vСтраницы
- « первая
- ‹ предыдущая
- …
- 128
- 129
- 130
- 131
- 132
- …
- следующая ›
- последняя »
