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.