Các ứng dụng được mô hình thành các đồ thị có nhiều phép toán phổ
biến. Chúng ta nhấn mạnh rằng mỗi phép toán này có thể được thực hiện trong nhiều cách khác nhau, tùy thuộc vào ứng dụng và cấu trúc lưu trữ đồ thị [11].
Có ba lớp (hay thực thể) cơ bản trong các đồ thị: Graph, Vertex và Edge. Với mỗi lớp liệt kê một loạt các phép toán (operation) phổ biến, hoặc các phương thức (method).
Public class Graph
{ public void add(Object label); // label miêu tảđỉnh thêm vào
public void addEdge(Object v1, Object v2, Object label);
// một cạnh được chèn vào giữa hai đỉnh v1 và v2
public Object delete(Object label); // xóa một đỉnh
public Object deleteEdge(Object v1, Object v2);
//xóa cạnh nối đỉnh v1 và v2
public Object get(Object label); // trả về nhãn đỉnh
public Edge getEdge(Object v1, Object v2);
// trả về nhãn của cạnh nối v1 và v2
public Object get-a-Successor(Object label);
// trả về nút liền kề với đỉnh
public Iterator getSuccessors(Object label);
// trả về tất cả các láng giềng liền kề
public Iteator getPredecessors(Object label); // trả về tất cả các nút cha
public boolean isDirected(); // trả về True nếu đồ thị có hướng
Vertex và Edge là hai lớp quan trọng khác. Hầu hết các thuật toán đồ thị
lưu lại vết của các đỉnh và các cạnh được thăm bằng cách đánh dấu chúng. Vì vậy, thật hữu ích để cung cấp hướng hỗ trợ cho các phép toán này. Vertex có thể
nhìn thấy được từ giao diện đồ thị, lớp này được công khai. public class Vertex
{ public Vertex(Object label);
//cấu tử của lớp. Tạo ra nút với nhãn thích hợp
public Object label(); // trả về nhãn thích hợp với đỉnh
public boolean visit(); // đánh dấu đỉnh đã đến thăm
public boolean isVisited(); // trả về True nếu đỉnh đã được thăm
}
Tương tự với lớp Vertex, lớp Edge được công khai vì nó được nhìn thấy từ giao diện đồ thị vì phương thức getEdge được sử dụng trong lớp Graph. Ở đây, chỉ liệt kê một vài phương thức cơ bản của lớp Edge. Khi sử dụng ta có thể
cung cấp thêm nhiều phương thức hơn. public class Edge
{ public Edge(Object v1, Object v2, Object label, boolean directed);
// cấu tử của lớp. Cạnh có hướng nếu được thiết lập giá trị True
public Object Start(); // trả về nút đầu tiên của cạnh
public Object End(); // trả về nút thứ hai của cạnh
} H HE 8 9 I 1 A AE 2 B 6 F G 7 J 10 3 C E5 D 4 EJ/EG EA JE GA GE AG
Ngoài ra, một số hệ thống gồm các kiểu dữ liệu bổ sung như tuyến
đường... Một đường đi là một dãy bắt đầu với một nút và kết thúc là một nút khác. Nó bao gồm các nút và các cạnh theo thứ tự đường đi. Chẳng hạn, các tuyến
đường tàu hỏa trong mạng lưới đường tàu hỏa miêu tả một đường đi (hình 1.14).