Структура даних графів складається зі скінченної (можливо, змінної) множинивершин (також, вони можуть називатися вузлами або точками) разом із множиною невпорядкованих пар цих вершин для неорієнтованого графу або множини впорядкованих пар для орієнтованого графу. Ці пари відомі як ребра (їх також називають зв'язками або відрізками), а для орієнтованого графу також відомі як стрілки. Вершини можуть бути частиною структури графу, або можуть бути зовнішніми об'єктами, представленими цілими індексами або посиланнями.
Структура даних у графах також може пов'язувати з кожним ребром якесь значення ребра, таке як символьний або числовий атрибут (вартість, місткість, довжина, тощо).
Вершини зберігаються у вигляді записів або об'єктів, і кожна вершина зберігає список суміжних вершин. Ця структура даних дозволяє зберігати додаткові дані у вершинах. Додаткові дані можуть бути збережені, якщо ребра також збережені як об'єкти, і в цьому випадку кожна вершина зберігає інцидентні їй ребра, а кожне ребро зберігає інцидентні йому вершини.
Двовимірна матриця, в якій рядки представляють початкові вершини, а стовпці — кінцеві вершини. Дані про ребра та вершини повинні зберігатися окремо. Між кожною парою вершин може зберігатися лише одне ребро.
Двовимірна булева матриця, в якій рядки представляють вершини, а стовпці — ребра. Записи вказують, чи буде вершина в рядку інцидентною ребру у стовпчику.
У наступній таблиці наведена часову складність для виконання різних операцій над графами з |V | кількістю вершин і |Е | кількістю ребер залежно від способу представлення. У матричних представленнях записи дають вартість операції для наступного ребра. Вартість для ребер, яких немає, вважається нескінченною.
Список суміжності
Матриця суміжності
Матриця інцидентності
Зберігати граф
Додати вершину
Додати ребро
Видалити вершину
Видалити ребро
Чи суміжні вершини x і y (якщо вважати, що місця їх зберігання відомі)?
Зауваження
Повільно видаляє вершини та ребра, тому що потрібно знаходити всі вершини чи ребра
Повільно додає або видаляє вершини, тому що матрицю потрібно змінювати розмір/копіювати
Повільно додає або видаляє вершини та ребра, тому що матрицю потрібно змінювати розмір/копіювати
Списки суміжності зазвичай є ефективнішими, оскільки вони краще представляють розріджені графи. Матриця суміжності є ефективнішою, якщо граф є щільним, тобто кількість ребер |Е| близька до квадрату кількості вершин — |V|2, або якщо потрібно швидко знайти ребро, яке з'єднує дві вершини.[5][6]
↑ абДив., наприклад Goodrich та Tamassia, (2015), Section 13.1.2: Operations on graphs, p. 360. Для більш детального набору операцій, див. Mehlhorn, K.; Näher, S. (1999), Chapter 6: Graphs and their data structures, LEDA: A platform for combinatorial and geometric computing, Cambridge University Press, с. 240—282
↑Goodrich, Michael T.; Tamassia, Roberto (2015), Section 13.1: Graph terminology and representations, Algorithm Design and Applications, Wiley, с. 355—364.
GraphBLAS [Архівовано 21 вересня 2016 у Wayback Machine.] — специфікація інтерфейсу бібліотеки для операцій над графами, з акцентом на розріджені графи.