Tee­kon­na­ot­singu algo­rit­mid kuuluvad kõige tuntumate ja enim ka­su­ta­ta­vate algo­ritmide hulka. Näitame, kuidas tee­kon­na­ot­sing toimib ja milleks seda ka­su­ta­takse.

Mis on teede leidmine?

Teekonna leidmine, mida tuntakse ka kui marsruudi leidmine, on ar­vu­ti­tea­duse üks põ­hi­kü­si­musi. See tähendab kahe punkti vahelise lühima või kõige tõhusama teekonna leidmist. Teekonna leidmise algo­rit­mid on paljudes ra­ken­dus­si­tuat­sioo­ni­des äärmiselt olulised ning selle probleemi la­hen­da­miseks on olemas palju erinevaid algoritme.

Kuidas tee­deot­sing toimib ja milleks seda ka­su­ta­takse

Tee­kon­na­ot­singu algoritmi käi­vi­ta­miseks esi­ta­takse probleem ta­va­li­selt graafina või ruu­dus­ti­kuna. Graaf koosneb servadega ühendatud sõlmedest, nagu vooskeem. Al­ter­na­tiivina võib kasutada ruu­dus­tikku, mis on ka­he­mõõt­me­line lahtrite massiiv, nagu malelaua ruudud. Sõlmed või lahtrid esindavad asukohti prob­lee­mi­ruumis ning servad või külgnevad lahtrid esindavad nende vahelisi või­ma­likke teid. Tee­kon­na­ot­singu algo­rit­mid kasutavad mit­me­su­gu­seid meetodeid, et leida tee kahe punkti vahel, kui probleem on esitatud graafina või võr­gus­ti­kuna. Ta­va­li­selt on nende algo­ritmide eesmärk leida lühim või odavaim tee, olles samal ajal või­ma­li­kult tõhusad.

Image: Finding the shortest path in graph and grid
Pat­h­fin­ding for finding the shortest path in the grid and graph – growing distances are shaded in colour.

Tee­deot­singu algo­ritmi­del on in­fo­teh­no­loo­gias palju rakendusi, seal­hul­gas:

  • Robootika: Tee­kon­na­ot­singu algoritme ka­su­ta­takse selleks, et aidata ise­seis­va­tel robotitel na­vi­gee­rida kee­ru­lis­tes kesk­kon­da­des. Mõelge näiteks ise­sõit­va­tele autodele või nu­ti­ka­tele tol­muime­ja­tele, mis liiguvad kodus ise­seis­valt ringi.
  • Vi­deo­män­gud: Vi­deo­män­gu­des ka­su­ta­takse tee­kon­na­ot­singu algoritme, et juhtida mängijast sõl­tu­ma­tute tegelaste (NPC) liikumist. Reaalajas stra­tee­gia­män­gus, kui klõpsate, et saata üksused vaenlase baasi, ka­su­ta­takse samuti tee­kon­na­ot­singu algoritme.
  • Logistika: Tee­kon­na­ot­singu algoritme ka­su­ta­takse lo­gis­ti­kas, et leida kõige tõhusam viis kaupade või inimeste trans­por­ti­miseks.
  • Liik­lus­pla­nee­ri­mine: Tee­kon­na­ot­singu algoritme ka­su­ta­takse linna liikluse parimate mars­ruu­tide pla­nee­ri­miseks, vältides samal ajal ummikuid.
  • Võr­gu­mars­ruu­ti­mine: Ar­vu­ti­võrk­u­des ka­su­ta­takse tee­kon­na­ot­singu algoritme, et leida kiireim marsruut andmete edas­ta­miseks erinevate võr­gu­sõl­mede vahel. Vaadelgem lähemalt mõningaid tee­kon­na­ot­singu või­ma­likke rakendusi.

Teede leidmine lo­gis­ti­kas

Logistika mars­ruu­di­pla­nee­ri­mine tähendab parima marsruudi leidmist kaupade veoks. Op­ti­maalne marsruut vähendab kulusid ja sõidu aega, tagades samal ajal veetavate toodete ohutuse. Seega on logistika mars­ruu­di­pla­nee­ri­mine oluline vahend kaupade liikumise op­ti­mee­ri­miseks ja kulude vä­hen­da­miseks.

Toome mõne näite abil välja, kuidas teekonna pla­nee­ri­mist lo­gis­ti­kas ka­su­ta­takse:

  • Sõidukite marsruudi pla­nee­ri­mine: Kaubaveos op­ti­mee­rivad mars­ruu­di­ot­singu algo­rit­mid tar­ne­au­tode marsruuti. Algoritm võtab arvesse selliseid tegureid nagu vahemaa, liik­lusolud ja tarneaja piirangud, et leida kõige tõhusam marsruut.
  • Laoseisu haldamine: Mars­ruu­di­ot­sin­gut ka­su­ta­takse laoseisu või lao­hal­duses kaupade paigutuse op­ti­mee­ri­miseks. See tagab, et kaubad la­dus­ta­takse op­ti­maal­se­tes kohtades. See vähendab kaupade väl­ja­võt­mise ja ko­ha­le­toi­me­ta­mise jaoks vajalikku vaeva ja aega.
  • Tar­neahela haldus: Mars­ruu­di­ot­singu algoritme ka­su­ta­takse kogu tar­neahela op­ti­mee­ri­miseks alates pä­rito­lust kuni ko­ha­le­toi­me­ta­miseni. See tagab, et tooteid trans­por­di­takse või­ma­li­kult tõhusalt ja ku­lu­tõ­hu­salt.

Teede leidmine vi­deo­män­gu­des

Tee­kon­na­ot­sing on vi­deo­män­gu­des kaa­sa­haa­ra­vate ja rea­list­like män­gu­maa­il­made loomisel oluline tehnika. See võimaldab mängijast sõl­tu­ma­tu­tel te­ge­las­tel (NPC-del) ja üksustel liikuda män­gu­maa­il­mas tõhusalt ja rea­list­li­kult. Tee­kon­na­ot­singu algoritme ka­su­ta­takse NPC-de lii­ku­miseks op­ti­maalse marsruudi leid­miseks, vältides samal ajal takistusi ja muid ohte, et tagada sujuv ja nauditav män­gu­ko­ge­mus.

Vi­deo­män­gu­des ka­su­ta­takse teekonna leidmist muu hulgas järgmiste üles­an­nete täit­miseks:

  • Vaenlase NPC-d: Tee­kon­na­ot­sin­gut ka­su­ta­takse vaenlase NPC-de käitumise juh­ti­miseks. See võimaldab NPC-del mängijat jälitada, vältides samal ajal takistusi ja muid ohte.
  • Üksuste juhtimine: tee­kon­na­ot­sing juhib sõbralike üksuste liikumist män­gu­maa­il­mas. See võib hõlmata NPC-de juhtimist sihtkohta või mängija tegelase jälgimist.
  • Ta­kis­tuste vältimine: tee­kon­na­ot­singu algo­rit­mid tagavad, et üksused väldivad takistusi, nagu seinad, kaljud või muud ohud.
  • Kaardi / taseme ge­ne­ree­ri­mine: tee­deot­singu algoritme ka­su­ta­takse ka kaartide või tasemete prot­se­duu­ri­li­seks ge­ne­ree­ri­miseks. See võimaldab luua rea­list­likke ja mit­me­ke­si­seid män­gu­maa­ilmu.

Teede leidmine võr­gu­mars­ruu­ti­misel

Mars­ruu­di­ot­sin­gut ka­su­ta­takse võr­gu­mars­ruu­ti­misel, et leida and­me­pa­ket­ti­dele op­ti­maal­sed mars­ruu­did võrgus. Mars­ruu­di­ot­singu algo­rit­mid või­mal­da­vad võr­guad­mi­nist­raa­to­ri­tel parandada võrgu jõudlust vastavalt konk­reet­se­tele tin­gi­mus­tele. Seda ka­su­ta­takse mit­me­su­gus­tes võr­gu­mars­ruu­ti­mise ra­ken­dus­tes, seal­hul­gas:

  • Liik­lus­kor­ral­dus: Mars­ruu­di­va­liku algo­rit­mid op­ti­mee­rivad võr­gu­liik­lust ja vä­hen­da­vad ummikuid. Võr­gu­to­po­loo­giat ja liik­lus­mustreid ana­lüü­si­des suudavad mars­ruu­di­va­liku algo­rit­mid leida and­me­pa­ket­ti­dele võrgus kõige tõhusamad mars­ruu­did.
  • Teenuse kvaliteet (QoS): Mars­ruu­di­ot­singu algoritme ka­su­ta­takse ka võr­gu­liik­luse priori­see­ri­miseks teenuse kva­li­teedi (QoS) nõuete alusel. Näiteks antakse aja­krii­ti­lis­tele andmetele, nagu IP-kõned (VoIP) või vi­deo­voo­gud, võrgus mars­ruu­ti­misel priori­teet. Priori­see­ri­mine on in­teg­ree­ri­tud ku­lu­funkt­siooni osana mars­ruu­di­ot­singu algo­ritmi­desse.
  • Koormuse ta­sa­kaa­lus­ta­mine: Spet­siaal­selt ko­han­da­tud mars­ruu­di­ot­singu algoritme ka­su­ta­takse võr­gu­liik­luse jao­ta­miseks mitme marsruudi vahel. Koormuse ta­sa­kaa­lus­ta­mise kaudu aitavad mars­ruu­di­ot­singu algo­rit­mid parandada võrgu jõudlust ja vähendada üle­koor­muse riski.
  • Usal­dus­väär­sus: mars­ruu­di­ot­singu algoritme ka­su­ta­takse al­ter­na­tiiv­sete mars­ruu­tide leid­miseks and­me­voole võrgu rikke korral. See tagab and­me­pa­ket­tide usal­dus­väärse edas­ta­mise, kui mõni võr­gu­kom­po­nent rikkeid.

Mars­ruu­di­ot­sing liik­lus­kor­ral­duses

Trans­por­dis ka­su­ta­takse mars­ruu­di­ot­sin­gut liik­lus­voo op­ti­mee­ri­miseks ja ummikute vä­hen­da­miseks. Mars­ruu­di­ot­singu algo­rit­mid aitavad liik­lus­in­se­ne­ri­del kavandada tõhusaid liik­lus­võrke ja töötada välja stra­tee­giaid liik­lus­voo pa­ran­da­miseks. Mars­ruu­di­ot­singu olu­li­se­mad ra­ken­dused trans­por­dis on muu hulgas järgmised:

  • Marsruudi pla­nee­ri­mine: mars­ruu­di­ot­singu algoritme ka­su­ta­takse sõidukite op­ti­maalse marsruudi pla­nee­ri­miseks, vältides ummikuga alasid. See parandab liik­lus­voogu ja vähendab viivitusi.
  • Liik­lus­val­gus­foo­ride op­ti­mee­ri­mine: tee­kon­na­ot­singu algoritme saab kasutada liik­lus­val­gus­foo­ride lü­li­ta­mise op­ti­mee­ri­miseks liik­lus­must­rite ja liik­lus­nõud­luse põhjal. Liik­lus­val­gus­foo­ride sünk­ro­ni­see­ri­mine ja ajakavade ko­han­da­mine võib parandada liik­lus­voogu.
  • Sündmuste haldamine: Tee­kon­na­ot­singu algoritme ka­su­ta­takse sõidukite al­ter­na­tiiv­sete mars­ruu­tide kind­laks­mää­ra­miseks õnnetuste või teede sulgemise korral. Sel viisil aitab tee­kon­na­ot­sing vähendada ummikuid ja parandada liik­lus­voogu mõjutatud piir­kon­da­des.
  • Ühis­trans­port: Mars­ruu­di­ot­singu algoritme saab kasutada ühis­trans­pordi mars­ruu­tide ja sõi­du­plaa­nide op­ti­mee­ri­miseks. See aitab parandada ühis­trans­por­di­süs­teemide tõhusust ja vähendada liik­lusum­mi­kuid.

Millised tee­kon­na­ot­singu algo­rit­mid on olemas?

Teekonna leidmise keerukus tuleneb konk­reetse prob­lee­mi­ruumi piiran­gu­test. See tähendab, et teekonna leidmise algo­rit­mid peavad arvestama kõiki takistusi, mis blo­kee­rivad otseteed, ning ruumis lii­ku­mi­sega seotud kulusid. Kulud võivad olla mit­me­mõõt­me­li­sed, näiteks komp­ro­miss ener­gia­tõ­hu­sate, kuid pikema lii­ku­mis­ajaga teede ja kiiremate, kuid rohkem energiat nõudvate mars­ruu­tide vahel. Tea­ta­va­tel juhtudel peavad teekonnas olema kindlad punktid ja teekonna leidmise algo­rit­mid tagavad, et kasutaja ei hakkaks ruumis liikudes ringi käima. Ta­va­li­selt on teekonna leidmise algo­ritmide eesmärk leida op­ti­maalne teekond või­ma­li­kult tõhusalt, eriti kui on vaja teekonda leida reaalajas.

Mõned levinumad tee­kon­na­ot­singu algo­rit­mid on:

  • Laius-esmane otsing (BFS): See algoritm uurib kõiki läh­te­punkti naa­ber­sõlmi enne järg­misele sõlmede tasandile liikumist, kuni eesmärk on saa­vu­ta­tud.
  • Dijkstra algoritm: See algoritm uurib graafi, kü­las­ta­des esmalt al­gus­punk­tile lähimat uurimata sõlme ja uuendades seejärel korduvalt kõigi sõlmede kaugust al­gus­punk­tist, kuni eesmärk on saa­vu­ta­tud.
  • A*: see algoritm ühendab BFS-i ja Dijkstra algoritmi ideed, kasutades heu­ris­ti­list funkt­siooni, et suunata otsing sihtsõlme poole.
  • Ahnuslik parima-esimesena otsing: See algoritm valib järgmise uuritava sõlme sihtsõlme kauguse heu­ris­ti­lise hinnangu alusel.
  • Ka­he­poolne otsing: See algoritm otsib sa­ma­aeg­selt nii alg- kui ka siht­sõl­mest graafi kesk­punkti suunas, et määrata kindlaks nende vaheline lühim tee.
Go to Main Menu