ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠœΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ систСм

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠšΡ€ΠΈΡΡ‚ΠΎΡ„ΠΈΠ΄Π΅Ρ Н. ВСория Π³Ρ€Π°Ρ„ΠΎΠ². АлгоритмичСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. М.: ΠœΠΈΡ€, 1978. НахоТдСниС расстояния ΠΎΡ‚ ΠΈΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠ° Π΄ΠΎ Π²ΡΠ΅Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½ Π² Π³Ρ€Π°Ρ„Π΅. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏpΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ списка с Π·Π°Π³Π»Π°Π²Π½Ρ‹ΠΌ Π·Π²Π΅Π½ΠΎΠΌ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°Ρ€Ρ‚ ΠšΠ°Ρ€Π½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ КНЀ ΠΈ Π”НЀ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ поля удаляСмого Π·Π²Π΅Π½Π° сохраня; НахоТдСниС ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΈΠ· S Π² T Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, содСрТащСй поля A, B, C… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠœΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ систСм (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

http://www..ru/

Π—Π°Π΄Π°Π½ΠΈΠ΅ 1

Π—Π°Π΄Π°Π½ΠΈΠ΅ 2

Π—Π°Π΄Π°Π½ΠΈΠ΅ 3

Π—Π°Π΄Π°Π½ΠΈΠ΅ 4

Π—Π°Π΄Π°Π½ΠΈΠ΅ 5

Π—Π°Π΄Π°Π½ΠΈΠ΅ 6

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

Π—Π°Π΄Π°Π½ΠΈΠ΅ 1

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π»Π³Π΅Π±Ρ€Ρ‹ Π»ΠΎΠ³ΠΈΠΊΠΈ, Π½Π°ΠΉΡ‚ΠΈ всС сущСствСнныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

РСшСниС РаспишСм Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎ Π΄Π΅ΠΉΡΡ‚виям ΠΈ Π΄Π»Ρ всСх Π½Π°Π±ΠΎΡ€ΠΎΠ² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ 3 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, посчитаСм ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

xyz

x|z

x|y

x V y V z

(x|z)(x|y)

f

Ѐункция тоТдСствСнно ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 ΠΏΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… значСниях ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… x, y, z. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сущСствСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅Ρ‚.

Π—Π°Π΄Π°Π½ΠΈΠ΅ 2

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ Π–Π΅Π³Π°Π»ΠΊΠΈΠ½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

РСшСниС ЗаписываСм Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

xyz

f

Находим БДНЀ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌ:

БДНЀ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Полином Π–Π΅Π³Π°Π»ΠΊΠΈΠ½Π°:

Π—Π°Π΄Π°Π½ΠΈΠ΅ 3

Найти БКНЀ ΠΈ Π‘ДНЀ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

РСшСниС НайдСм с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

xyz

xy

f

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ БДНЀ (Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) ΠΈ Π‘КНЀ (Π½ΡƒΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ):

БДНЀ (Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹):

БКНЀ (Π½ΡƒΠ»ΠΈ):

Π—Π°Π΄Π°Π½ΠΈΠ΅ 4

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°Ρ€Ρ‚ ΠšΠ°Ρ€Π½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ КНЀ ΠΈ Π”НЀ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

РСшСниС Π—Π°ΠΏΠΈΡˆΠ΅ΠΌ ΠΊΠ°Ρ€Ρ‚Ρƒ ΠšΠ°Ρ€Π½ΠΎ:

zt

xy

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹:

КНЀ (покрытия ΠΏΠΎ Π½ΡƒΠ»ΡΠΌ):

ДНЀ (покрытия ΠΏΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌ):

Π—Π°Π΄Π°Π½ΠΈΠ΅ 5

ΠŸΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ связный ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ ΠΈΠ· ΠΏΡΡ‚ΠΈ Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅ΠΌ сСми Ρ€Π΅Π±Π΅Ρ€ (ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π²ΡΠ΅ Ρ€Π΅Π±Ρ€Π°). Для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π° ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, ΠΏΠΎ Π½Π΅ΠΉ (ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π±ΡƒΠ»Π΅Π²ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹) Π½Π°ΠΉΡ‚ΠΈ всС ΠΏΡƒΡ‚ΠΈ ΠΈ ΡΠ΅Ρ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π»ΡŽΠ±Ρ‹ΠΌΠΈ нСсмСТными Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ Π½Π° Π²Π°Ρˆ Π²Ρ‹Π±ΠΎΡ€ РСшСниС Π’Π°Π±Π»ΠΈΡ†Π°:

ΠŸΡƒΡ‚ΠΈ ΠΈΠ· 1 Π² 4:

1. 1−3-4

2. 1−2-4

Π—Π°Π΄Π°Π½ΠΈΠ΅ 6

ΠŸΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ связный Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ ΠΈΠ· Π²ΠΎΡΡŒΠΌΠΈ Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅ΠΌ 14 Ρ€Π΅Π±Π΅Ρ€ (нумСрация Ρ€Π΅Π±Π΅Ρ€ — слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, вСса ΠΎΡ‚ 1 Π΄ΠΎ 20). Для этого Π³Ρ€Π°Ρ„Π° ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ минимально островноС Π΄Π΅Ρ€Π΅Π²ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠŸΡ€ΠΈΠΌΠ°, ΠΈ Π½Π°ΠΉΡ‚ΠΈ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ 1 ΠΈ 8 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ДСйкстры. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π° Π»ΡŽΠ±ΠΎΠΌ языкС программирования.

Π°Π»Π³Π΅Π±Ρ€Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π³Ρ€Π°Ρ„ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ дСйкстра РСшСниС

ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ДСйкстра

//—————————————————————————————————————;

#include

#pragma hdrstop

//—————————————————————————————————————;

#pragma argsused

//НахоТдСниС расстояния ΠΎΡ‚ ΠΈΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠ° Π΄ΠΎ Π²ΡΠ΅Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½ Π² Π³Ρ€Π°Ρ„Π΅

//с Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ вСсами (ΠΌΠ΅Ρ‚ΠΎΠ΄ ДСйкстры).

//НахоТдСниС ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΈΠ· S Π² T.

#include

#define MaxNodes 14

#define B 1000 //ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ эквивалСнт бСсконСчности.

//ОписаниС Ρ‚ΠΈΠΏΠ° ΡƒΠ·Π»Π° стСка.

typedef struct Zveno *svqz;

struct Zveno

{

int Element;

svqz Sled;

};

class Spisok

{

private:

int A[MaxNodes][MaxNodes]; //ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° вСсов Π΄ΡƒΠ³.

int D[MaxNodes]; //ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° расстояний ΠΎΡ‚ ΠΈΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠ° Π΄ΠΎ

//всСх Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π°.

svqz Stack; //Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стСк.

void UDALENIE (svqz *, int *);

void W_S (svqz *, int);

int Pusto_Q (int *);

public:

Spisok () {Stack = NULL;}

void Vvod_Ves ();

void Reshenie ();

};

void main ()

{

Spisok A;

A.Vvod_Ves ();

A.Reshenie ();

}

int Spisok: Pusto_Q (int *Q)

{

for (int i=0;i

if (*(Q+i)≠0) return 0; //Π›ΠΎΠΆΡŒ — Π½Π΅ ΠΏΡƒΡΡ‚ΠΎ!

return 1; //Π˜ΡΡ‚ΠΈΠ½Π° — пусто!

}

void Spisok: Reshenie ()

{

int S; // ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π²Π΅Ρ€ΡˆΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ (источник).

int T; // ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ Π²Π΅Ρ€ΡˆΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ.

int u, v, Min;

int i, j, k;

svqz UkZv;

int Q[MaxNodes];

cout << «input source: «;

cin >> S; S—;

//Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ.

for (i=0;i

D[S] = 0;

for (i=0;i

Q[S] = 0;

//ВычислСниС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ расстояний ΠΎΡ‚

//источника Π΄ΠΎ Π²ΡΠ΅Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π°.

while (!Pusto_Q (&Q[0])) //Пока Q Π½Π΅ ΠΏΡƒΡΡ‚ΠΎ.

{

Min = B;

for (i=0;i

if (Q[i]==1 && D[i]

Q[u] = 0;

for (i=0;i

if (Q[i] == 1)

if (D[i] > D[u]+A[u][i]) D[i] = D[u] + A[u][i];

}

//Π’Ρ‹Π²ΠΎΠ΄ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ расстояний ΠΎΡ‚ ΠΈΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠ°

//Π΄ΠΎ всСх Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π°.

cout << «matrix of distanses: n» ;

for (i=0;i<< D[i] << ««;

cout << endl;

// ——————————————————————————;

// НахоТдСниС ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΈΠ· S Π² T Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ

// построСнной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ расстояний.

// ——————————————————————————;

cout << «Inpute finish node: «;

cin >> T; T—;

W_S (&Stack, T); v = T;

while (v≠S)

{

for (i=0;i

if (D[v]==D[i]+A[i][v]) u = i;

W_S (&Stack, u);

v = u;

}

//Π’Ρ‹Π²ΠΎΠ΄ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ Π½Π° ΡΠΊΡ€Π°Π½ дисплСя.

cout << «Minimal path: «;

UkZv = Stack;

while (UkZv ≠ NULL)

{ cout << (UkZv->Element+1) << ««;

UkZv = UkZv->Sled; }

cout << endl;

}

void Spisok: Vvod_Ves ()

//Π’Π²ΠΎΠ΄ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ вСсов Π΄ΡƒΠ³ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π°.

{

cout << «Inppute the elements of edge matrix by strings: n» ;

for (int i=0;i

for (int j=0;j

{

cout << «Inpute A[» << (i+1) << «,» << (j+1) << «: «;

cin >> A[i][j];

if (A[i][j]==0) A[i][j] = B;

}

}

void Spisok: W_S (svqz *stk, int Elem)

//ΠŸΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Elem Π² ΡΡ‚Π΅ΠΊ stk.

{

svqz q=new (Zveno);

(*q).Element = Elem;

(*q).Sled = *stk; *stk = q;

}

void Spisok: UDALENIE (svqz *stk, int *Klad)

//Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π²Π΅Π½Π° ΠΈΠ· ΡΡ‚Π΅ΠΊΠ°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ *stk.

//Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ поля удаляСмого Π·Π²Π΅Π½Π° сохраня;

//Стся Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ Klad.

{

svqz q;

if (*stk==NULL) cout<<" try to select from the empty stack! n" ;

else

{ *Klad = (**stk).Element;

q = *stk; *stk = (**stk).Sled; delete q; }

}

Алгоритм ΠŸΡ€ΠΈΠΌΠ°:

//—————————————————————————————————————;

#include

#pragma hdrstop

//—————————————————————————————————————;

#pragma argsused

#include

#define TRUE 1

#define FALSE 0

typedef int Boolean;

typedef unsigned int SubInt;

typedef struct Uzel *Ref;

struct Uzel

{

SubInt X; //Начало Π΄ΡƒΠ³ΠΈ.

SubInt Y; //ΠšΠΎΠ½Π΅Ρ† Π΄ΡƒΠ³ΠΈ

int Pay; //Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π΄ΡƒΠ³ΠΈ.

Ref Left; //Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π»Π΅Π²ΠΎΠ³ΠΎ сына.

Ref Right;//Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ сына.

};

typedef struct zveno *svqz;

struct zveno

{

unsigned int Element[256];

svqz Sled;

zveno ();

};

zveno:zveno ()

{

for (int k=0;k<256;Element[k++]=0);

}

class Spisok

{

private:

Ref Root;

void Search (int, int, int, Ref *);

void Poisk (svqz, SubInt, svqz *);

void Postroenie (svqz *);

void Udalenie (svqz *, svqz);

public:

Spisok () { Root = NULL;} //Π’Π½Π°Ρ‡Π°Π»Π΅ Π΄Π΅Ρ€Π΅Π²ΠΎ пусто.

void Reshenie ();

void Postr ();

};

void Spisok: Search (int A, int B, int C, Ref *p)

//Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, содСрТащСй поля A, B, C, Π² Π΄Π΅Ρ€Π΅Π²ΠΎ *p.

{

if ((*p) == NULL)

{

(*p) = new (Uzel); (**p).X = A; (**p).Y = B; (**p).Pay = C;

(**p).Left = (**p).Right = NULL;

}

else

if (C<=(**p).Pay) Search (A, B, C,&((**p).Left));

else

if (C>(**p).Pay) Search (A, B, C,&((**p).Right));

}

void Spisok: Postroenie (svqz *UkStr)

//ΠŸΠΎΡΡ‚pΠΎΠ΅Π½ΠΈΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏpΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ списка

//с Π·Π°Π³Π»Π°Π²Π½Ρ‹ΠΌ Π·Π²Π΅Π½ΠΎΠΌ, содСрТащСго Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π³Ρ€Π°Ρ„Π°.

{

svqz UkZv;

int el;

(*UkStr) = new (zveno);

UkZv = (*UkStr); UkZv->Sled = NULL;

cout << «Input nodes: n» ;

cin >> el;

while (el≠0)

{

UkZv->Sled = new (zveno); UkZv = UkZv->Sled;

UkZv->Element[el] = 1; UkZv->Sled = NULL;

cin >> el;

}

}

void Spisok: Postr ()

//ΠŸΠΎΡΡ‚pΠΎΠ΅Π½ΠΈΠ΅ Π΄Π΅pΠ΅Π²Π°, содСрТащСго всС Ρ€Π΅Π±Ρ€Π° Π³Ρ€Π°Ρ„Π°.

{

int A, B, C;

cout << «For every nodes input input start and finishn» ;

cout << «node and cost of edge: n» ;

cin >> A >> B >> C;

while (A≠0)

{ Search (A, B, C,&Root);

cin >> A >> B >> C;

}

}

void Spisok: Poisk (svqz st, SubInt MENT, svqz *Res)

{

svqz q;

(*Res) = NULL; q = st->Sled;

while (q ≠ NULL && (*Res) == NULL)

{

if (q->Element[MENT]==1) (*Res) = q;

else q = q->Sled;

}

}

void Spisok: Udalenie (svqz *zv, svqz UkStr)

//Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏpΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ списка с Π·Π°Π³Π»Π°Π²Π½Ρ‹ΠΌ Π·Π²Π΅Π½ΠΎΠΌ

//элСмСнта, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ zv.

{

svqz Z; //" Π‘Ρ‚Π°pΡ‹ΠΉ" ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

svqz UkZv1; //" HΠΎΠ²Ρ‹ΠΉ" ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

if ((*zv)->Sled ≠ NULL) (**zv) = *((**zv).Sled);

else

{ Z = UkStr; UkZv1 = UkStr->Sled;

while (UkZv1 ≠ (*zv))

{ Z = UkZv1; UkZv1 = UkZv1->Sled; }

Z->Sled = NULL; delete UkZv1;

}

}

void Spisok: Reshenie ()

{

svqz UkStr; //Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠΏΠΈΡΠΎΠΊ.

Ref UkUzel; //Π Π°Π±ΠΎΡ‡ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠ·Π΅Π» Π΄Π΅Ρ€Π΅Π²Π°.

Ref UkUzel1; //Π Π°Π±ΠΎΡ‡ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠ·Π΅Π» Π΄Π΅Ρ€Π΅Π²Π°.

SubInt T1, T2;

svqz Res1, Res2;

//ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… мноТСств Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π°.

Postroenie (&UkStr);

cout <<" Edges with minimsl cost: «;

while (UkStr->Sled->Sled ≠ NULL)

{

UkUzel1 = Root; //" ΠžΡ‚ΡΡ‚Π°ΡŽΡ‰ΠΈΠΉ" ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

UkUzel = Root->Left; //" ΠžΠΏΠ΅Ρ€Π΅ΠΆΠ°ΡŽΡ‰ΠΈΠΉ" ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

if (UkUzel== NULL)

{ //Π’Ρ‹Π±ΠΎΡ€ Π² Π΄Π΅Ρ€Π΅Π²Π΅ Ρ€Π΅Π±Ρ€Π° наимСньшСй стоимости ΠΈ …

T1 = Root->X; T2 = Root->Y;

//… ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ этого Ρ€Π΅Π±Ρ€Π° ΠΈΠ· Π΄Π΅Ρ€Π΅Π²Π°.

Root = Root->Right; delete UkUzel1;

}

else

{ //Π’Ρ‹Π±ΠΎΡ€ Π² Π΄Π΅Ρ€Π΅Π²Π΅ Ρ€Π΅Π±Ρ€Π° наимСньшСй стоимости ΠΈ …

while (UkUzel->Left ≠ NULL)

{

UkUzel1 = UkUzel1->Left;

UkUzel = UkUzel->Left;

}

T1 = UkUzel->X; T2 = UkUzel->Y;

//… ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ этого Ρ€Π΅Π±Ρ€Π° ΠΈΠ· Π΄Π΅Ρ€Π΅Π²Π°.

UkUzel1->Left = UkUzel->Right;

delete UkUzel;

}

//Если v ΠΈ w ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ

//мноТСствам W1 ΠΈ W2 ΠΈΠ· VS …

Res1 = Res2 = NULL;

Poisk (UkStr, T1,&Res1);

Poisk (UkStr, T2,&Res2);

if (Res1≠Res2)

for (int k=0;k<256;k++)

if (Res1->Element[k]==1

}

}

void main ()

{

Spisok Tree;

Tree.Postr ();

Tree.Reshenie ();

}

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

1. НСфСдов Π’. Н., Осипова Π’. А. ΠšΡƒΡ€Ρ дискрСтной ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ / МАИ. М., 1992.

2. ΠšΡ€ΠΈΡΡ‚ΠΎΡ„ΠΈΠ΄Π΅Ρ Н. ВСория Π³Ρ€Π°Ρ„ΠΎΠ². АлгоритмичСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. М.: ΠœΠΈΡ€, 1978.

3. Уилсон Р.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π² Ρ‚Π΅ΠΎΡ€ΠΈΡŽ Π³Ρ€Π°Ρ„ΠΎΠ². М.: ΠœΠΈΡ€, 1977.

4. БСрзтисс А. Π’. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….1974

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ