Ru­te­fin­dings­al­go­rit­mer hører til blandt de mest kendte og mest anvendte al­go­rit­mer. Vi viser, hvordan ru­te­fin­ding fungerer, og hvad den bruges til.

Hvad er ru­te­plan­læg­ning?

Ru­te­fin­ding, også kendt som way­fin­ding, er et grund­læg­gen­de problem inden for datalogi. Det handler om at finde den korteste eller mest effektive rute mellem to punkter. Ru­te­fin­dings­al­go­rit­mer er afgørende i mange an­ven­del­ses­sce­na­ri­er, og der findes mange for­skel­li­ge al­go­rit­mer til at løse dette problem.

Hvordan ru­te­fin­ding fungerer, og hvad den bruges til

For at starte en ru­te­fin­dings­al­go­rit­me re­præ­sen­te­res problemet typisk som en graf eller et gitter. En graf består af knu­de­punk­ter, der er forbundet med kanter, ligesom et flow­di­a­gram. Al­ter­na­tivt kan der anvendes et gitter, som er en to­di­men­sio­nal matrix af celler, ligesom et skakbræt. Knu­de­punk­ter­ne eller cellerne re­præ­sen­te­rer pla­ce­rin­ger i pro­blem­rum­met, og kanterne eller de til­stø­de­n­de celler re­præ­sen­te­rer de mulige ruter mellem dem. Ru­te­fin­dings­al­go­rit­mer anvender en række teknikker til at finde ruten mellem to punkter, når problemet er re­præ­sen­te­ret som en graf eller et gitter. Typisk har disse al­go­rit­mer til formål at iden­ti­fi­ce­re den korteste eller billigste rute, samtidig med at de er så effektive som muligt.

Billede: 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.

Vej­fin­dings­al­go­rit­mer har mange an­ven­del­ses­mu­lig­he­der inden for datalogi, herunder:

  • Ro­bot­tek­nik: Ru­te­fin­dings­al­go­rit­mer bruges til at hjælpe autonome robotter med at navigere i komplekse miljøer. Tænk på selv­kø­ren­de biler eller smarte støv­su­ge­re, der selv finder vej rundt i hjemmet.
  • Videospil: I videospil bruges ru­te­fin­dings­al­go­rit­mer til at styre be­væ­gel­ser­ne hos ikke-spiller-ka­rak­te­rer (NPC’er). I et re­al­tids­stra­te­gi­spil bruges der også ru­te­fin­dings­al­go­rit­mer, når du klikker for at sende enheder til fjendens base.
  • Logistik: Vej­fin­dings­al­go­rit­mer bruges i logistik til at finde den mest effektive måde at trans­por­te­re varer eller mennesker på.
  • Tra­fik­plan­læg­ning: Vej­fin­dings­al­go­rit­mer bruges til at planlægge de bedste ruter for en bys trafik og samtidig undgå tra­fikprop­per.
  • Net­værks­rou­ting: I com­pu­ter­net­værk bruges ru­te­fin­dings­al­go­rit­mer til at finde den hurtigste vej til da­ta­trans­mis­sion mellem for­skel­li­ge net­værks­no­der. Lad os se nærmere på nogle mulige an­ven­del­ser af ru­te­fin­ding.

Ru­te­plan­læg­ning inden for logistik

Ru­te­plan­læg­ning inden for logistik handler om at finde den bedste rute til transport af varer. En optimal rute minimerer om­kost­nin­ger­ne og trans­port­ti­den, samtidig med at den sikrer de trans­por­te­re­de pro­duk­ters sikkerhed. Ru­te­plan­læg­ning inden for logistik er derfor et afgørende redskab til at optimere va­re­trans­por­ten og reducere om­kost­nin­ger­ne.

Lad os med et par eksempler il­lu­stre­re, hvordan ru­te­plan­læg­ning anvendes inden for logistik:

  • Ru­te­plan­læg­ning for køretøjer: Inden for god­strans­port optimerer ru­te­plan­læg­nings­al­go­rit­mer le­ve­rings­kø­re­tø­jer­nes ruter. Al­go­rit­men tager højde for faktorer som afstand, tra­fik­for­hold og tids­mæs­si­ge be­græns­nin­ger for le­ve­rin­gen for at udarbejde den mest effektive rute.
  • La­ger­sty­ring: Ru­te­plan­læg­ning bruges i la­ger­sty­ring eller la­ger­sty­ring til at optimere pla­ce­rin­gen af varer. Dette sikrer, at varerne opbevares på optimale pla­ce­rin­ger. Dette reducerer den indsats og tid, der kræves til hentning og levering af varer.
  • For­sy­nings­kæ­de­ad­mi­ni­stra­tion: Ru­te­fin­dings­al­go­rit­mer bruges til at optimere hele for­sy­nings­kæ­den fra op­rin­del­se til levering. Dette sikrer, at produkter trans­por­te­res så effektivt og om­kost­nings­ef­fek­tivt som muligt.

Vej­fin­ding i videospil

Ru­te­fin­ding er en afgørende teknik til at skabe for­dy­ben­de og re­a­li­sti­ske spil­ver­de­ner i videospil. Den gør det muligt for ikke-spiller-figurer (NPC’er) og enheder at bevæge sig rundt i spil­ver­de­nen på en effektiv og re­a­li­stisk måde. Ru­te­fin­dings­al­go­rit­mer bruges til at finde den optimale rute for NPC’ernes be­væ­gel­ser, samtidig med at for­hin­drin­ger og andre farer undgås, for at sikre en pro­blem­fri og un­der­hol­den­de spi­l­op­le­vel­se.

I videospil anvendes ru­te­fin­ding blandt andet til følgende opgaver:

  • Fjendt­li­ge NPC’er: Vej­fin­ding bruges til at styre fjendt­li­ge NPC’ers adfærd. Dette gør det muligt for NPC’erne at følge spilleren, samtidig med at de undgår for­hin­drin­ger og andre farer.
  • En­heds­kon­trol: Pat­h­fin­ding styrer be­væ­gel­sen af venlige enheder i spil­ver­de­nen. Dette kan omfatte at lede NPC’er til deres desti­na­tion eller at følge spil­le­rens karakter.
  • Undgåelse af for­hin­drin­ger: Pat­h­fin­ding-al­go­rit­mer sikrer, at enheder undgår for­hin­drin­ger såsom mure, klipper eller andre farer.
  • Ge­ne­re­ring af kort/niveauer: Pat­h­fin­ding-al­go­rit­mer bruges også til pro­ce­dur­e­ge­ne­re­ring af kort eller niveauer. Dette gør det muligt at skabe re­a­li­sti­ske og varierede spil­ver­de­ner.

Ru­te­fin­ding i net­værks­rou­ting

Ru­te­fin­ding anvendes i net­værks­rou­ting til at finde optimale ruter for da­ta­pak­ker gennem et netværk. Ru­te­fin­dings­al­go­rit­mer giver net­værksad­mi­ni­stra­to­rer mulighed for at forbedre net­vær­kets ydeevne ud fra de konkrete om­stæn­dig­he­der. Det anvendes i for­skel­li­ge net­værks­rou­ting-ap­pli­ka­tio­ner, herunder:

  • Tra­fiks­ty­ring: Ru­te­fin­dings­al­go­rit­mer optimerer net­værk­stra­fik­ken og minimerer over­be­last­ning. Ved at analysere net­vær­kets topologi og tra­fik­møn­stre kan ru­te­fin­dings­al­go­rit­mer iden­ti­fi­ce­re de mest effektive ruter for da­ta­pak­ker gennem netværket.
  • Ser­vi­ce­kva­li­tet (QoS): Ru­te­fin­dings­al­go­rit­mer anvendes også til at pri­o­ri­te­re net­værk­stra­fik­ken baseret på krav til ser­vi­ce­kva­li­tet (QoS). For eksempel gives tids­kri­ti­ske data, såsom Voice-over-IP (VoIP) eller vi­deo­streams, prioritet i ruten gennem netværket. Pri­o­ri­te­ring er in­te­gre­ret i om­kost­nings­funk­tio­nen som en del af ru­te­fin­dings­al­go­rit­mer­ne.
  • Load balancing: Specielt til­pas­se­de ru­te­fin­dings­al­go­rit­mer bruges til at fordele net­værk­stra­fik­ken på flere ruter. Gennem load balancing hjælper ru­te­fin­dings­al­go­rit­mer med at forbedre net­værk­sy­del­sen og reducere risikoen for over­be­last­ning.
  • På­li­de­lig­hed: Sti­fin­dings­al­go­rit­mer bruges til at finde al­ter­na­ti­ve stier for da­ta­strøm­men i tilfælde af net­værks­fejl. Dette sikrer, at da­ta­pak­ker leveres på­li­de­ligt, hvis en net­værks­kom­po­nent svigter.

Ru­te­plan­læg­ning i tra­fik­plan­læg­nin­gen

Ru­te­fin­ding anvendes inden for trans­port­sek­to­ren til at optimere tra­fi­kaf­vik­lin­gen og mindske tra­fikprop­per. Ru­te­fin­dings­al­go­rit­mer hjælper tra­fikin­ge­ni­ø­rer med at designe effektive tra­fik­net­værk og udvikle stra­te­gi­er til at forbedre tra­fi­kaf­vik­lin­gen. Nogle af de vigtigste an­ven­del­ser af ru­te­fin­ding inden for trans­port­sek­to­ren omfatter:

  • Ru­te­plan­læg­ning: Der anvendes ru­te­fin­dings­al­go­rit­mer til at planlægge optimale ruter for køretøjer, så man undgår områder med tæt trafik. Dette forbedrer tra­fi­kaf­vik­lin­gen og mindsker for­sin­kel­ser.
  • Op­ti­me­ring af trafiklys: Ru­te­fin­dings­al­go­rit­mer kan bruges til at optimere skift mellem trafiklys baseret på tra­fik­møn­stre og tra­fi­k­ef­ter­spørgsel. Syn­kro­ni­se­ring af trafiklys og justering af tids­pla­ner kan forbedre tra­fik­flowet.
  • Hæn­del­ses­sty­ring: Vej­fin­dings­al­go­rit­mer bruges til at iden­ti­fi­ce­re al­ter­na­ti­ve ruter for køretøjer i tilfælde af ulykker eller vejspær­rin­ger. På denne måde hjælper vej­fin­ding med at reducere trængsel og forbedre tra­fik­flowet i de berørte områder.
  • Offentlig transport: Ru­te­fin­dings­al­go­rit­mer kan bruges til at optimere ruter og kø­re­pla­ner for offentlig transport. Dette kan bidrage til at forbedre ef­fek­ti­vi­te­ten af of­fent­li­ge trans­port­sy­ste­mer og reducere tra­fikprop­per.

Hvilke ba­ne­be­stem­mel­ses­al­go­rit­mer findes der?

Kom­plek­si­te­ten ved ru­te­fin­ding skyldes de be­græns­nin­ger, der gør sig gældende i det spe­ci­fik­ke pro­blem­rum. Det betyder, at ru­te­fin­dings­al­go­rit­mer skal tage højde for alle for­hin­drin­ger, der spærrer den direkte vej, samt de om­kost­nin­ger, der er forbundet med at bevæge sig gennem rummet. Om­kost­nin­ger­ne kan være fler­di­men­sio­nel­le, f.eks. af­vej­nin­gen mellem ener­gi­mæs­sigt gunstige ruter, der kræver længere rejsetid, og hurtigere ruter, der kræver mere energi. I visse tilfælde skal de­fi­ne­re­de punkter in­klu­de­res i ruten, og ru­te­fin­dings­al­go­rit­mer sikrer, at brugeren ikke ender med at gå i cirkler, når ved­kom­men­de navigerer gennem rummet. Typisk er målet med ru­te­fin­dings­al­go­rit­mer at iden­ti­fi­ce­re en optimal rute så effektivt som muligt, især når der kræves ru­te­fin­ding i realtid.

Nogle al­min­de­li­ge al­go­rit­mer til ru­te­fin­ding er:

  • Bred­desøg­ning (BFS): Denne algoritme gennemgår alle nabonoder til start­punk­tet, før den går videre til det næste niveau af noder, indtil målet er nået.
  • Dijkstra-al­go­rit­men: Denne algoritme udforsker grafen ved først at besøge en uud­for­sket node tættest på start­punk­tet og derefter gentagne gange opdatere afstanden mellem alle noder og start­punk­tet, indtil målet er nået.
  • A*: Denne algoritme kom­bi­ne­rer ideerne fra BFS og Dijkstras algoritme ved at bruge en heuri­stisk funktion til at styre søgningen mod målnoden.
  • Grådig best-first-søgning: Denne algoritme vælger den næste node, der skal udforskes, baseret på et heuri­stisk skøn over afstanden til målnoden.
  • Tovejs-søgning: Denne algoritme søger samtidigt fra både start- og desti­na­tions­knu­de­punk­ter­ne mod midten af grafen for at bestemme den korteste vej mellem dem.
Gå til ho­ved­me­nu­en