En graf er en matematisk abstraktion af et virkeligt system af enhver art, hvis objekter har parvise forbindelser. En graf som et matematisk objekt er en samling af to sæt - selve sættet af objekter, kaldet sættet af hjørner , og sættet af deres parvise forbindelser, kaldet sættet af kanter. Et element i et kantsæt er et par elementer i et toppunktsæt.
Grafer er meget udbredt i moderne videnskab og teknologi. De bruges både inden for naturvidenskab (fysik og kemi) og i samfundsvidenskab (for eksempel sociologi), men brugen af grafer har fået den største skala inden for datalogi og netværksteknologier.
Som det enkleste eksempel fra livet kan vi give et flyvediagram for et bestemt flyselskab, som er modelleret ved hjælp af en graf, hvor toppen af grafen er byer, og kanterne er flyve, der forbinder par af byer. Et bibliotekstræ i en computer er også en graf: drev, mapper og filer er hjørner, og kanterne viser indlejring af filer og mapper i mapper og drev [1] . Strukturen af Wikipedia er modelleret af en rettet graf , hvor artikler er grafens toppunkter, og hyperlinks er buer ( tematisk kort ).
Grafer er hovedobjektet for undersøgelse i grafteori .
Systemerne af den virkelige natur, der er modelleret af grafer, er meget forskellige, så der er forskellige typer grafer. Den enkleste abstraktion af systemer med elementer, der har parvise forbindelser, er en simpel graf .
Definition. En simpel graf er en samling af to sæt - et ikke-tomt sæt og et sæt uordnede par af forskellige elementer i sættet . Et sæt kaldes et sæt af hjørner , et sæt kaldes et sæt kanter
,det vil sige, at sættet består af 2-element undersæt af sættet .
Relaterede termer
Grafteori har ikke en veletableret terminologi. Derfor kan nogle publikationer bruge andre udtryk end dem, der er anført nedenfor.
Typisk er en graf afbildet som et diagram : knudepunkter - punkter, kanter - linjer.
En pseudograf er en samling af to sæt - et ikke-tomt sæt og et sæt uordnede par af elementer i sættet .
Elementet er tilladt i sættet af kanter på pseudografen .
Med andre ord, hvis elementerne i sættet E kan være sløjfer, så kaldes grafen en pseudograf [2] .
En multigraf er en samling af to sæt - et ikke-tomt sæt og et multisæt af uordnede par af forskellige elementer i sættet .
Med andre ord, hvis ikke et sæt, men en familie, det vil sige, hvis det indeholder de samme elementer, så kaldes sådanne elementer multiple edges, og grafen kaldes en multigraf [2] .
En pseudomultigraf er en samling af to sæt - et ikke-tomt sæt og et multisæt af uordnede par af elementer i sættet .
Med andre ord, hvis en familie, der indeholder de samme elementer (flere kanter) og kan indeholde sløjfer, så kaldes grafen en pseudo-multigraf [2] .
Directed graph (digraph) ( eng. directed graph eller dirgaph ) er et sæt af to sæt - et ikke-tomt sæt og et sæt buer eller ordnede par af forskellige elementer i sættet
.sammen med to displays
,hvor afbildningen tildeler hver bue dens indledende toppunkt (begyndelsen af buen) , og afbildningen tildeler hver bue dens endepunkt (enden af buen) . De siger, at buen fører fra til
En blandet graf er en samling af tre sæt - et ikke-tomt sæt hjørner og et sæt buer eller ordnede par af forskellige elementer i sættet og et sæt kanter af uordnede par af forskellige elementer i sættet
.sammen med to displays
Direkte og urettede grafer er særlige tilfælde af blandede grafer.
En graf kaldes isomorf i forhold til en graf, hvis der er en bijektion fra sættet af toppunkter i grafen til sættet af toppunkter i grafen , som har følgende egenskab: hvis grafen har en kant fra toppunkt til toppunkt , så grafen skal have en kant fra toppunkt til toppunkt og omvendt - hvis grafen har en kant fra toppunkt til toppunkt , så skal grafen have en kant fra toppunkt til toppunkt . I tilfælde af en rettet graf skal denne bijektion også bevare kantens orientering. I tilfælde af en vægtet graf skal bijektionen også bevare kantens vægt.
En rute i en graf er en endelig sekvens af knudepunkter, hvor hvert knudepunkt (undtagen det sidste) er forbundet med det næste knudepunkt i sekvensen med en kant. En kæde er en rute uden gentagne kanter. En simpel sti er en sti uden gentagne hjørner (hvilket betyder, at der ikke er nogen gentagne kanter i en simpel sti).
En orienteret rute (eller sti ) i en digraf er en endelig sekvens af hjørner og buer, hvor hvert element falder sammen med det forrige og det næste.
En cyklus er en kæde, hvor første og sidste toppunkt falder sammen. I dette tilfælde er længden af stien (eller cyklus) antallet af dens konstituerende kanter . Bemærk, at hvis hjørnerne og er enderne af en eller anden kant, så er sekvensen ifølge denne definition en cyklus. For at undgå sådanne "degenererede" tilfælde introduceres følgende begreber.
En sti (eller cykel) kaldes simpel , hvis kanterne på den ikke gentager sig; elementær , hvis den er enkel, og hjørnerne i den ikke gentages (med undtagelse af den indledende og sidste i tilfælde af en cyklus).
De enkleste egenskaber ved stier og cykler:
En binær relation på toppunktet af en graf, angivet som "der er en vej fra til ", er en ækvivalensrelation og opdeler derfor dette sæt i ækvivalensklasser, kaldet forbundne komponenter af grafen. Hvis en graf har præcis én tilsluttet komponent, så er grafen forbundet. På den tilsluttede komponent kan vi introducere begrebet afstand mellem toppunkter som minimumslængden af en sti, der forbinder disse toppunkter.
Enhver maksimalt forbundet undergraf af en graf kaldes en forbundet komponent (eller blot en komponent) af grafen . Ordet "maksimum" betyder maksimum med hensyn til inklusion, dvs. ikke indeholdt i en forbundet undergraf med et stort antal elementer.
En kant i en graf kaldes en bro, hvis dens fjernelse øger antallet af komponenter.
Grafen hedder:
Det sker også:
En simpel graf er et endimensionelt forenklet kompleks .
Mere abstrakt kan en graf defineres som en tredobbelt , hvor og er nogle sæt ( hhv . hjørner og kanter ), og er en incidensfunktion (eller indfaldsfaktor ), der tildeler hver kant (ordnet eller uordnet) et par hjørner og fra (dens ender ). Særlige tilfælde af dette koncept er:
En tabel, hvor både kolonner og rækker svarer til grafens hjørner. I hver celle i denne matrix er der skrevet et tal, der bestemmer tilstedeværelsen af en forbindelse fra den øverste række til den øverste kolonne (eller omvendt).
Dette er den mest bekvemme måde at repræsentere tætte grafer på.
Ulempen er hukommelseskravene, som er direkte proportionale med kvadratet af antallet af toppunkter.
En tabel, hvor rækkerne svarer til grafens toppunkter, og kolonnerne svarer til grafens links (kanter). I en matrixcelle i skæringspunktet mellem en række og en kolonne skrives følgende:
en i tilfælde af at forbindelsen "forlader" toppen , -1, hvis forbindelsen "kommer ind" i toppunktet, 0 i alle andre tilfælde (det vil sige, hvis forbindelsen er en sløjfe, eller forbindelsen ikke er indfaldende ved toppunktet)Denne metode er ret rummelig (størrelsen er proportional med ) til opbevaring, så den bruges meget sjældent, i særlige tilfælde (for eksempel for hurtigt at finde cyklusser i en graf).
En liste, hvor hvert hjørne af grafen svarer til en streng, der gemmer en liste over tilstødende hjørner. En sådan datastruktur er ikke en tabel i sædvanlig forstand, men er en "liste over lister".
Hukommelsesstørrelse: .
Dette er den mest bekvemme måde at repræsentere sparsomme grafer, såvel som når du implementerer grundlæggende grafgennemløbsalgoritmer i bredden eller dybden, hvor du hurtigt skal finde "naboerne" til det aktuelt viste toppunkt.
En liste, hvor hver kant af grafen svarer til en streng, der gemmer to hjørner, der falder ind på kanten.
Hukommelsesstørrelse: .
Dette er den mest kompakte måde at repræsentere grafer på, så den bruges ofte til ekstern lagring eller dataudveksling.
For at beskrive grafer, der er velegnede til maskinbearbejdning og samtidig bekvemme for menneskelig opfattelse, bruges flere standardiserede sprog, herunder:
Der er udviklet en række kommercielle programmer til at bygge grafer, for eksempel er grafbygning grundlaget for ILOG applikationssoftwarepakker (siden 2009 ejet af IBM Corporation ), blandt andre programmer - GoView, Lassalle AddFlow, LEDA (der er en gratis udgave ).
Der er også et gratis grafprogram igraph og et gratis bibliotek kaldet Boost .
VisualiseringsprogrammerFølgende softwareværktøjer bruges til at visualisere grafer :