þekking Discovery
/ Knowledge Discovery >> þekking Discovery >> tækni >> tölva >> tölva vélbúnaður >>

Hvernig vegvísun Reiknirit Work

ngd /* lengd frá upptökum að þessari hnút * /Enum {varanleg, bráðabirgða} merki /* merki ríkisins * /} ríkisins [MAX_NODES]; int I, k, min; struct ríkisins * p; fyrir (p = & ríkisins [0]; p < & ríkisins [n]; p ++) {/* frumstilla ríkisins * /p- > forvera = -1p- > lengd = INFINITYp- > merki = bráðabirgða; } ríkisins [t] .length = 0; Ríkið [t] .label = varanleg; k = t; /* k er upphaflega vinna node * /do {/* er betra leiðin frá k? * /fyrir i = 0; I < n; I ++) /* þessi línurit eru n hnútar * /if (Dist [K] [I] = 0 & & ríkisins [I] .label == bráðabirgða) {ef (ríki [k] .length + dist [k ] [I] < ríkisins [I] .length) {ríkisins [I] .predecessor = k; Ríkið [I] .length = ríkisins [k] .length + District [k] [I]}} /* Finndu semingi merktur hnút með minnstu merki. * /k = 0; min = INFINITY; for (i = 0; i < n, ég ++) ef (ríki [I] .label == bráðabirgða & & ríkisins [I] .length < mín) = ástand [I] .length; k = I; } ríkisins [k] .label = varanleg} meðan (k = s!); /* Afritaðu slóðina inn framleiðsla array * /I = 0; k = 0Do {slóð [I ++] = k, k = ríkisins [k]. Forveri;} en (k > = 0);} DV reiknirit

DV reiknirit eru einnig þekkt sem Bellman-Ford vegvísun reiknirit og Ford-Fulkerson vegvísun reiknirit. Í þessum reiknirit, hvert leið hefur vegvísun töflu sem sýnir það besta leiðin fyrir hvaða áfangastað. Dæmigerð línurit og vegvísun borð fyrir leið J birtist efst á síðunni.

Eins og sjá má, ef leið J vill fá pakka að leið D, það ætti að senda þá til leið H. Þegar pakka koma á leið H, tékka það eigin borð þess og ákveður hvernig á að senda pakka til D.

Í DV reiknirit, hver leið hefur að fylgja þessum skrefum:

  1. Það skiptir máli að þyngd af tenglum sem tengjast beint því og vistar upplýsingar til borð þess.
  2. Í ákveðinn tíma, það senda borð hennar náunga leið sína (ekki alla leið) og fá vegvísun borð hvers nágranna sína
  3. Byggt á upplýsingum í vegvísun borðum nágranna sinna, endurnýja það eigin

    Einn af mikilvægustu vandamálum með DV reiknirit er kölluð ".. telja að Infinity. " Við skulum skoða þetta vandamál með dæmi:

    Ímyndaðu net með línuriti eins og sýnt er hér að neðan. Eins og þú sérð í þessu grafi, það er aðeins einn hlekkur milli A og öðrum hlutum netsins. Hér getur þú séð línurit og vegvísun borð allra hnúður:
    Network línurit og vegvísun borðum
    HowStuffWorks.com

    Nú ímynda sér að tengsl milli A og B er skorið.

    Page [1] [2] [3] [4] [5] [6]