Orientarea bipolară sau orientarea st a unui graf nedirecționat este alocarea unei orientări fiecărei muchii ( orientare ), care transformă graficul într-un graf aciclic direcționat cu o singură sursă s și un singur sink t și numerotarea st a graficul este o sortare topologică a graficului aciclic direcționat rezultat [1] [2] .
Fie un graf nedirecționat cu vârfuri. Orientarea unui grafic G este alocarea unei direcții fiecărei margini a graficului G , ceea ce îl transformă într-un grafic direcționat . O orientare este aciclică dacă graficul direcționat rezultat nu are cicluri direcționate . Orice graf direcționat aciclic are cel puțin o sursă (un vârf din care nu intră niciun arc) și cel puțin un sink (un vârf din care nu provine arcuri). O orientare este bipolară dacă există exact o sursă și exact o chiuvetă. În unele situații, G poate fi dat împreună cu vârfurile selectate s și t . În acest caz, orientarea bipolară ar trebui să aibă s ca unică sursă și t ca singura chiuvetă [1] [2] .
Numerotarea st a graficului G (din nou, cu cele două vârfuri s și t evidențiate ) este alocarea numerelor întregi de la 1 la n vârfurilor graficului G astfel încât
Un grafic are o orientare bipolară dacă și numai dacă are o numerotare st . Dacă graficul are o orientare bipolară, atunci o numerotare st poate fi construită prin găsirea tipului topologic al graficului aciclic direcționat având în vedere orientarea și numerotarea fiecărui vârf în funcție de poziția sa în această ordine. În direcția opusă, orice numerotare st generează o ordine topologică în care fiecare muchie a graficului G este orientată de la un punct final cu numerotare mai mică la un punct final cu numerotare mai mare [1] [2] . Într-un grafic care conține muchia st , o orientare este bipolară dacă și numai dacă este aciclică, iar orientarea formată prin inversarea muchiei st este complet ciclică [2] .
Un grafic conex G cu vârfuri distincte s și t are o orientare bipolară și o numerotare st dacă și numai dacă graficul format din G prin adăugarea unei muchii de la s la t este conectat cu 2 vârfuri [3] . Într-o direcție, dacă acest grafic este conectat cu 2 vârfuri, atunci o orientare bipolară poate fi obținută prin orientarea secvențială a fiecărei urechi în descompunerea urechii a graficului [4] . În cealaltă direcție, dacă graficul nu este conectat cu 2 vârfuri, atunci are un vârf articulat v care separă o componentă bi-conectată a lui G de s și t . Dacă această componentă conține un vârf cu un număr mai mic decât v , atunci vârful cu numărul cel mai mic din componentă nu poate avea un vecin cu un număr mai mic, iar simetric, dacă conține un vârf cu un număr mai mare decât v , atunci cel mai mare- vârful numerotat din componentă nu poate avea vecin cu un număr mare.
Lempel, Even și Zederbaum [3] au formulat st -numerări ca parte a algoritmului de verificare a planarității [3] , în timp ce Rosenstiel [5] și Tarjan [1] au formulat orientarea bipolară ca parte a algoritmului de tiling al graficului planar [1] .
Orientarea bipolară a unui graf plan are ca rezultat un graf st - planar , un graf planar aciclic direcționat cu o sursă și o absorbție. Aceste grafice joacă un rol important în teoria rețelei , precum și în vizualizarea graficelor - diagrama Hasse a unei rețele bidimensionale este în mod necesar st -planar, iar orice graf st -planar redus tranzitiv reprezintă o rețea bidimensională. în acest fel [6] . Un graf aciclic direcționat G are o reprezentare plană ascendentă dacă și numai dacă graficul G este un subgraf al unui graf st -planar [7] .
Se poate găsi numerotarea st și orientarea bipolară a unui graf dat cu vârfuri distinse s și t în timp liniar folosind căutarea depth-first [8] [9] [10] . Algoritmul lui Tarjan [10] folosește o căutare în profunzime care începe la vârful s . Ca și în algoritmul de căutare în profunzime pentru a verifica dacă un grafic este dublu conectat, acest algoritm transmite mai întâi o valoare pre( v ) pentru vârful v , care este numărul de precomanda pentru trecerea în adâncime a vârfului v și un număr scăzut( v ) , care este cel mai mic număr de precomandă care poate fi obținut urmând o margine de la v într-un arbore de căutare de adâncime. Ambele numere pot fi calculate în timp liniar ca parte a unei căutări în profunzime. Un graf dat va fi bi-conectat (și va avea o orientare bipolară) dacă și numai dacă t este singurul copil al unui vârf s din arborele de căutare de adâncime și pentru toate vârfurile v, altele decât s . Odată ce aceste numere au fost calculate, algoritmul lui Tarjan efectuează o a doua trecere a arborelui df, menținând un semn numeric ( v ) pentru fiecare vârf v și o listă legată de vârfuri care în cele din urmă produce o listă a tuturor vârfurilor din grafic în ordinea dată de numerotarea st . Inițial, lista conține s și t și . Când v este găsit la prima trecere, v este inserat în listă fie înainte, fie după părintele său p( v ) în arborele de căutare depth-first conform semnului(low( v )). Apoi sign(p( v )) este setat la -sign(low( v )). După cum arată Tarjan, ordinea rezultată a vârfurilor din această procedură dă numerotarea st a graficului dat [10] .
Alternativ, algoritmii eficienți în serie și paralele se pot baza pe descompunerea urechii [4] [11] . O descompunere a urechii deschise a unui graf dat cu vârfuri distincte s și t poate fi definită ca o partiție a marginilor graficului într-o succesiune de căi numite „urechi”, în care punctele finale ale primei urechi sunt s și t , punctele finale ale fiecare ureche următoare aparține urechilor anterioare din succesiune și fiecare vârf interior al fiecărei urechi apare mai întâi în acea ureche. O descompunere a urechii deschise există dacă și numai dacă graficul obținut prin adăugarea muchiei st este biconectat (aceeași condiție ca și pentru existența unei orientări bipolare) și poate fi găsit în timp liniar. st -Orientarea poate fi obținută dând o direcție adecvată fiecărei urechi, luând precauția ca, dacă există deja o cale orientată care conectează aceleași două capete în urechile anterioare, atunci noua ureche trebuie să aibă aceeași direcție. Cu toate acestea, verificarea directă cu un calcul de accesibilitate va fi lentă. Mahon, Shiber și Vyshkin [4] au dat o procedură de căutare complexă, dar localizată, pentru determinarea orientării adecvate pentru fiecare ureche, care (spre deosebire de abordarea DFS) este potrivită pentru calculul paralel [4] .
Papamentow și Tollis [12] raportează algoritmi pentru controlul lungimii căilor direcționate într-o orientare bipolară a unui graf dat, care la rândul lor conduc la controlul pentru lungimea și înălțimea unor vizualizări de graf [12] .
Pentru graficele conectate cu vârfuri 3 cu vârfuri distinse s și t , oricare două orientări bipolare pot fi conectate între ele printr-o succesiune de operații care inversează direcția unui arc, menținând orientarea bipolară la fiecare pas [2] . Mai strict, pentru grafurile plane 3-conectate, setului de orientări bipolare i se poate da structura unei rețele distributive finite cu operația de inversare a direcției arcului corespunzătoare relației de acoperire rețelei [ en] 2] . Pentru orice grafic cu o sursă și un canal dedicat, setul tuturor orientărilor bipolare poate fi enumerat în timp polinomial pe orientare [2] .