topological sort

Üdvözlöm, Ön a topological sort szó jelentését keresi. A DICTIOUS-ban nem csak a topological sort szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a topological sort szót egyes és többes számban mondani. Minden, amit a topological sort szóról tudni kell, itt található. A topological sort szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. Atopological sort és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Főnév

topological sort (tsz. topological sorts)

  1. (informatika) ?

A topological sort (topologikus rendezés) egy irányított gráf (DAG – Directed Acyclic Graph) csúcspontjainak olyan lineáris sorrendbe állítása, amelyben minden él irányát figyelembe vesszük. Ez azt jelenti, hogy ha van egy él , akkor a csúcs megelőzi -t a rendezésben.



🧠 1. Mikor használjuk?

Topologikus rendezést olyan függőségi viszonyokat tartalmazó problémákban alkalmazunk, ahol a tevékenységeket vagy eseményeket sorrendbe kell állítani:

Példák:

  • Feladatütemezés (pl. egy feladat csak másik után kezdhető)
  • Fordítási sorrend (egyes fájlok függnek másoktól)
  • Kurzusok előfeltételei (melyiket kell előbb elvégezni)
  • Makefile / build rendszer
  • Adatfolyam modellek (Dataflow DAG)



🔁 2. Feltételek

Topologikus sorrend csak akkor létezik, ha a gráf irányított és körmentes (DAG). Ha kör van benne, akkor nem létezik olyan sorrend, ami megfelel az élirányoknak.



📐 3. Formális definíció

Adott egy irányított gráf , a topologikus sorrend olyan permutáció , ahol:

Minden él esetén: megelőzi -t, azaz szerepel előbb a listában.



🔢 4. Algoritmusok

4.1 Kahn algoritmusa (indegree-alapú, BFS jellegű)

  1. Számoljuk meg minden csúcs bejövő fokát (indegree).
  2. Helyezzük azokat a csúcsokat egy sorba, amelyeknek .
  3. Vegyünk ki egy ilyen csúcsot, tegyük a sorrendbe.
  4. Csökkentsük az utódainak az -jét.
  5. Ha valamelyik utód lesz, tegyük a sorba.
  6. Ismételjük, amíg van csúcs a sorban.

Ha nem dolgoztunk fel az összes csúcsot, akkor ciklus van.

Pythonban:

from collections import deque, defaultdict

def kahn_topological_sort(graph):
    indegree = {u: 0 for u in graph}
    for u in graph:
        for v in graph:
            indegree += 1

    queue = deque( == 0])
    topo_order = 

    while queue:
        u = queue.popleft()
        topo_order.append(u)
        for v in graph:
            indegree -= 1
            if indegree == 0:
                queue.append(v)

    if len(topo_order) != len(graph):
        raise ValueError("A ciklus miatt nincs topologikus sorrend.")

    return topo_order

4.2 DFS-alapú algoritmus

  1. Minden csúcson futtass DFS-t.
  2. Ha végeztünk egy csúcs bejárásával, tegyük a listánk elejére.
  3. A végeredmény: topologikusan rendezett lista.

Pythonban:

def dfs_topological_sort(graph):
    visited = set()
    topo_order = 

    def dfs(u):
        visited.add(u)
        for v in graph:
            if v not in visited:
                dfs(v)
        topo_order.append(u)

    for u in graph:
        if u not in visited:
            dfs(u)

    return topo_order  # fordított sorrend

🧭 5. Példa gráfra

Adott egy gráf:

A → C
B → C
C → D
D → E

Lehetséges topologikus sorrendek:

  • A, B, C, D, E
  • B, A, C, D, E



🧮 6. Alkalmazások

Terület Példa
Ütemezés Feladatfüggőségek
Build rendszerek Fordítási sorrend (pl. make)
Fordítási sorrend Fordítási sorrend a nyelvfordítóban
Adatcsővezeték Moduláris adatfeldolgozás
Kurzus-előfeltétel Kurzusok teljesítési sorrendje



⚠️ 7. Hibakezelés

  • Ha nem létezik topologikus sorrend, akkor a gráf kört tartalmaz.
  • Ez észlelhető:
    • Kahn algoritmusánál: ha a végén marad feldolgozatlan csúcs.
    • DFS-nél: ha szürke csúcsra lépünk újra (ciklusdetektálás).



📌 8. Összefoglalás

Tulajdonság Érték
Adatstruktúra Irányított gráf (DAG)
Cél Csúcsok sorrendbe állítása, hogy minden él iránya megmaradjon
Módszerek Kahn (BFS), DFS
Komplexitás
Feltétel Csak körmentes irányított gráfra létezik
Alkalmazás Fordítás, ütemezés, függőség-kezelés