SPQR træ

Et SPQR-træ er en trædatastruktur, der bruges i datalogi , nemlig i grafalgoritmer, til at repræsentere de tre-forbundne komponenter i en graf. Tri-forbundne komponenter i en dobbeltforbundet graf er et system af mindre grafer, der beskriver alle 2-vertex sektioner af grafen. SPQR-træet i en graf kan bygges i lineær tid [1] [2] og har nogle applikationer i dynamiske grafalgoritmer og grafvisualisering .

Den grundlæggende struktur, der ligger til grund for SPQR-træet, er de tre-forbundne komponenter i en graf, og forholdet mellem en sådan nedbrydning og plane indlejringer blev først undersøgt af McLane [3] . Disse strukturer blev brugt af andre forskere i effektive algoritmer [4] , før de blev formaliseret som et SPQR-træ af Di Batista og Tamassia [5] [6] [7] .

Struktur

Et SPQR-træ har form af et urodfæstet træ , hvor der for hver node x er en tilknyttet urettet graf eller multigraf G x . En knude og den graf, der er knyttet til den, kan være en af ​​fire typer, forkortet SPQR:

Hver xy -kant mellem to SPQR-træknuder er forbundet med to rettede virtuelle kanter , hvoraf den ene er i G x og den anden i G y . Hver kant i grafen G x kan være en virtuel kant for højst én kant af SPQR-træet.

SPQR-træet T er en 2-forbundet graf G T dannet som følger. Hvis kanten xy på SPQR-træet forbinder den virtuelle kant ab på grafen G x med den virtuelle kant cd på grafen G y , dannes en større graf ved at flette a og c ind i et supervertex, flette b og d ind i et andet supervertex , og sletning af to virtuelle kanter. Det vil sige, at den større graf er summen over 2-klik G x og G y . Fortsættelsen af ​​sådan limning af hver kant af SPQR-træet giver grafen G T , rækkefølgen af ​​limning påvirker ikke resultatet. Hvert toppunkt i en af ​​graferne G x kan på denne måde associeres med et enkelt toppunkt i G T , det vil sige super-toppunktet, som det blev flettet ind i.

Det er normalt ikke tilladt for to noder af type S eller to noder af type P at være tilstødende inden for et SPQR-træ, fordi med en sådan adjacency kan to noder slås sammen til en større node. Med dette krav er SPQR-træet entydigt defineret af en graf, og graferne G x knyttet til noderne i SPQR-træet er kendt som de tre-forbundne komponenter i grafen G .

Konstruktion

Et SPQR-træ af en given 2-vertex-forbundet graf kan bygges i lineær tid [1] [2] .

Problemet med at konstruere tre-forbundne komponenter i en graf i lineær tid blev først løst af Hopcroft og Tarjan [1] . Baseret på denne algoritme foreslog Di Battista og Tamassia [7] , at hele strukturen af ​​et SPQR-træ, og kun de af dets komponenter, kan bygges i lineær tid. Efter implementeringen af ​​den langsommere algoritme for SPQR-træer blev inkluderet i GDToolkit-biblioteket, gav Gutwenger og Mutzel [2] den første implementering af lineær tid. Som en del af implementeringsprocessen korrigerede de noget af det tidligere arbejde af Hopcroft og Tarjan [1] .

Algoritmen for Gutwenger og Mutzel [2] inkluderer følgende trin.

  1. Vi sorterer kanterne af grafen efter par af indekser af dens endehjørner ved hjælp af en variant af radix sort , som laver to gennemløb af bloksortering (en passage for hver ende). Derefter vil de parallelle kanter stå side om side i den sorterede liste og kan opdeles i en P-node i det endelige SPQR-træ, hvilket gør den resterende graf enkel.
  2. Vi opdeler grafen i komponenter. Disse komponenter kan dannes ved at finde par af adskillende spidser og opdele grafen over disse to spidser i mindre grafer (med tilhørende par af virtuelle kanter, der har de adskillende spidser som bladhjørner). Partitioneringsprocessen gentages, indtil der er par, som partitionering kan udføres over. Den partition, der opnås på denne måde, er ikke nødvendigvis unik, da de dele af grafen, der skulle blive til S-knuder i SPQR-træet, er opdelt i flere trekanter.
  3. Vi mærker hver komponent i partitionen med bogstavet P (to-vertex-komponent med flere kanter), med bogstavet S (trekantformet komponent) eller R (enhver anden komponent). Så længe der er to komponenter, der deler et forbundet par virtuelle kanter, og begge komponenter er af type S, eller begge komponenter er af type P, skal disse komponenter flettes til en større komponent af samme type.

Gutwenger og Mutzel [2] bruger dybde -første søgning for at finde en struktur, de kalder en "palmetræ". Palmen er bygget på basis af et dybde-første søgetræ og har buer af søgetræet med orientering fra træets rod til bladene, de resterende buer (palmeblade) er orienteret mod roden. Gutwenger og Mutzel leder derefter efter en speciel nummereringsforudbestilling til palmeknuderne og bruger bestemte mønstre i den nummerering til at identificere par af hjørner, der kan opdele grafen i mindre komponenter. Hvis en komponent findes på denne måde, bruges stakken til at identificere de kanter, der skal være en del af den nye komponent .

Brug

Finde 2-vertex sektioner

Med et SPQR-træ af G (ingen Q-noder) kan man direkte finde hvert par af u'er og v'er i G , hvis fjernelse gør G afbrudt, men efterlader tilsluttede komponenter:

Repræsentation af alle indlejringer af plane grafer

Hvis en plan graf er 3-forbundet, har den en unik plan indlejring op til valget af den ydre flade og orienteringen af ​​indlejringen - fladerne af indlejringen er nøjagtigt grafens cyklusser. Men for 2-forbundne plane grafer (med mærkede spidser og kanter), som ikke er 3-forbundne, kan der være mere frihed til at finde en plan indlejring. Mere specifikt, hvis to knudepunkter i et SPQR-træ i en graf er forbundet med et par virtuelle kanter, er det muligt at ændre orienteringen af ​​en af ​​kanterne i forhold til den anden. Derudover kan forskellige dele af grafen, der er forbundet med de virtuelle kanter af knudepunktet P, permuteres vilkårligt ved en knude af typen P i et SPQR-træ. Alle plane repræsentationer af en graf kan beskrives på denne måde [8] .

Se også

Noter

  1. 1 2 3 4 Hopcroft, Tarjan, 1973 .
  2. 1 2 3 4 5 Gutwenger, Mutzel, 2001 .
  3. Mac Lane, 1937 .
  4. For eksempel Horcroft og Tarjan ( Hopcroft, Tarjan 1973 ), Binstock og Monma ( Bienstock, Monma 1988 ). Begge papirer er blevet citeret som forløbere af Di Batista og Tamassia.
  5. 1 2 3 4 Di Battista, Tamassia, 1989 .
  6. Di Battista, Tamassia, 1990 .
  7. 1 2 Di Battista, Tamassia, 1996 .
  8. Mac Lane (1937) .

Litteratur

Links