Sobes.tech
Junior — Middle

Kuidas saab graafstruktuuris esinevate tippude vahelisi seoseid ja seoseid kujutada ja kirjeldada?

sobes.tech AI

Vastus AI-lt

Seosed ja seoseid vahel tippude struktuuris tavaliselt kirjeldatakse servade abil. Graafi esindamise peamised viisid:

  • Naabrite nimekiri: iga tipu jaoks hoitakse nimekiri selle naabertippudest, kellega see on ühendatud. See on tõhus viis haruldaste graafide jaoks.

  • Naabrite maatriks: kahe mõõtmega massiiv, kus element [i][j] näitab, kas tipud i ja j on ühendatud servaga (ja võib-olla selle kaaluga). Sobib tihedatele graafidele.

  • Servade nimekiri: lihtsalt kõigi servade nimekiri, kus iga serv sisaldab teavet alg- ja lõpptipu kohta (ja kaal, kui see on).

Näiteks Java-s võib graafi esitada järgmiselt:

class Graph {
    private Map<Integer, List<Integer>> adjacencyList = new HashMap<>();

    void addEdge(int from, int to) {
        adjacencyList.computeIfAbsent(from, k -> new ArrayList<>()).add(to);
        // Mitte-suundliku graafi jaoks lisa vastupidine serv
        // adjacencyList.computeIfAbsent(to, k -> new ArrayList<>()).add(from);
    }
}

Nii modelleeritakse tippude vahelised seosed servadega, ning andmestruktuur valitakse ülesande ja graafi omaduste põhjal.