Nếu tôi muốn lấy tên theo id của đỉnh, tôi có thể sử dụng hàm này:VAS(g, "tên", id)
Nhưng nếu mình muốn làm ngược lại thì lấy id theo tên thì phải làm như thế nào?
Bản thân igraph không cung cấp cách tìm các đỉnh theo tên và vì lý do chính đáng - việc ánh xạ từ tên sang ID khó hơn ánh xạ từ ID sang tên, đây là một thao tác tra cứu mảng đơn giản. Bạn có thể lặp qua tất cả các đỉnh và dừng ở các đỉnh trùng khớp, nhưng điều này không hiệu quả đối với các đồ thị lớn (số đỉnh là O(n)). Cách nhanh hơn là sử dụng một số cấu trúc dữ liệu mảng kết hợp giống như cấu trúc trong câu trả lời của @ Jasc mệnh lệnh
, sử dụng tên làm khóa và ID làm giá trị. (Nếu bạn thay đổi nó, bạn cần giữ chỉ mục này đồng bộ với biểu đồ.) Bản thân C hoặc thư viện C tiêu chuẩn không cung cấp cấu trúc dữ liệu như vậy, nhưng có nhiều triển khai có sẵn, ví dụ: Cấu trúc GHash. Tìm thấy trong glib.
Tôi là một lập trình viên xuất sắc, rất giỏi!