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

ПсСвдокод Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. 
Алгоритм ΠšΡ€Π°ΡΠΊΠ°Π»Π°

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

ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠŸΡ€ΠΈΠΌΠ° зависит ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ Q. Если Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΊΠ°ΠΊ Π±ΠΈΠ½Π°Ρ€Π½ΡƒΡŽ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρƒ, Ρ‚ΠΎ Π΄Π»Ρ выполнСния ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΡΡ‚Ρ€ΠΎΠΊΠ°Ρ… 1βˆ’5 потрСбуСтся Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ О (V). Π’Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° while выполняСтся |V| Ρ€Π°Π·, Π° ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ каТдая опСрация Extract_Min Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ врСмя О (lg V), ΠΎΠ±Ρ‰Π΅Π΅ врСмя всСх Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Extract__Min составляСт О (V*lg V). Π¦ΠΈΠΊΠ» for Π² ΡΡ‚Ρ€ΠΎΠΊΠ°Ρ… 8βˆ’11… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ПсСвдокод Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Алгоритм ΠšΡ€Π°ΡΠΊΠ°Π»Π° (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

MST_PRIM (G, w, r).

  • 1 for (Для) ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ u Ρ” V[G]
  • 2 do key [u] «- INFINITY
  • 3 prev[u] «- NIL
  • 4 key[r] «- 0
  • 5 Q «- V[G]
  • 6 while Q Π½Π΅ ΠΏΡƒΡΡ‚ая
  • 7 do u «- Extract_Min (Q)
  • 8 for (Для) ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ v Ρ” Adj[u]
  • 9 do if v Ρ” Q ΠΈ w (u, v) < key[v]
  • 10 then prev[v] «- u
  • 11 key[v] «- w (u, v)

Π‘Π»ΠΎΠΊ-схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

  • 1
  • 1
  • 1
  • 1
  • 1
  • 1

Код ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

#include.

#include.

#include.

#define forn (i, n) for (int i=0;i.

using namespace std;

int n, m;

vector g[500]; //ΠΊΡ€ΠΎΠΌΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½ список смСТности Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈ Π²Π΅Ρ Ρ€Π΅Π±Ρ€Π°.

vector used (500,0);//Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½.

int inf=10 000 000;

vector d (500,inf);//Π²Π΅ΠΊΡ‚ΠΎΡ€ расстояний.

int main ().

{.

freopen («input.txt» ," rt", stdin);

freopen («output.txt» ," wt", stdout);

cin>>n>>m;

int x, y, l;

pair temp;

forn (i, m){.

cin>>x>>y>>l;

x—;

y—;

temp.first=y;

temp.second=l;

g[x]. push_back (temp);

temp.first=x;

g[y]. push_back (temp);

}.

vector path (500);

d[0]=0;

while (true){.

int v=-1;

int dist=inf;

forn (u, n).

if (!used[u] && dist>=d[u]).

{.

v=u;

dist=d[u];

}.

if (v==-1) break;

used[v]=true;

forn (u, g[v]. size ()).

if (!used[g[v][u]. first]) {.

if (d[g[v][u]. first]>g[v][u].second) path[g[v][u]. first]=make_pair (v, g[v][u].first);

d[g[v][u]. first]=min (d[g[v][u].first], g[v][u].second);

}.

}.

long long sum=0;

forn (i, n) sum+=d[i];

cout<

forn (i, n-1).

cout<<<" «<<

return 0;

}.

ΠžΡ†Π΅Π½ΠΊΠ° слоТности

ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠŸΡ€ΠΈΠΌΠ° зависит ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ Q. Если Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΊΠ°ΠΊ Π±ΠΈΠ½Π°Ρ€Π½ΡƒΡŽ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρƒ, Ρ‚ΠΎ Π΄Π»Ρ выполнСния ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΡΡ‚Ρ€ΠΎΠΊΠ°Ρ… 1−5 потрСбуСтся Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ О (V). Π’Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° while выполняСтся |V| Ρ€Π°Π·, Π° ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ каТдая опСрация Extract_Min Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ врСмя О (lg V), ΠΎΠ±Ρ‰Π΅Π΅ врСмя всСх Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Extract__Min составляСт О (V*lg V). Π¦ΠΈΠΊΠ» for Π² ΡΡ‚Ρ€ΠΎΠΊΠ°Ρ… 8−11 выполняСтся всСго О (Π•) Ρ€Π°Π·, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сумма Π΄Π»ΠΈΠ½ всСх списков смСТности Ρ€Π°Π²Π½Π° 2|Π•|. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° for ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ Q Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ 9 ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π·Π° ΠΏΠΎΡΡ‚оянноС врСмя, Ссли Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π±ΠΈΡ‚ΠΎΠΌ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ, находится Π»ΠΈ ΠΎΠ½Π° Π² Q, ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ этот Π±ΠΈΡ‚ ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΈΠ· Q. ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ 11 нСявно Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Decrease_Key Π½Π°Π΄ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄ΠΎΠΉ. ВрСмя выполнСния этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ — О (lg V). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ±Ρ‰Π΅Π΅ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠŸΡ€ΠΈΠΌΠ° составляСт o (V * lg V + Π• * lg V) = o (Π• * lg V), Ρ‡Ρ‚ΠΎ асимптотичСски совпадаСт со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠšΡ€ΡƒΡΠΊΠ°Π»Π°.

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