2013-06-10 24 views

Trả lời

7

Bạn có thể tìm thấy id đỉnh bằng cách truy cập một đỉnh cụ thể của vertexSeq là 'a' là một đối tượng chuỗi đỉnh.

Một cái gì đó như thế này, nên làm các trick.

a[0].index 
11

OK, có vẻ như chúng tôi có hai câu hỏi ở đây. Một là trong tiêu đề câu hỏi: "làm cách nào để tìm ID đỉnh nếu chúng ta có đối tượng Vertex"? Đây là chính xác answered by Siddharth: bạn chỉ có thể sử dụng thuộc tính index của đỉnh. Câu hỏi còn lại nằm trong phần câu hỏi: "Tôi muốn thêm một cạnh giữa a và b, làm thế nào để tôi đi về?". Câu trả lời đơn giản là sử dụng phương pháp add_edge mà chấp nhận đối tượng Vertex cũng như ID đỉnh:

g.add_edge(a, b) 

Ở đây tôi cho rằng ab là đối tượng thuộc loại Vertex. Tuy nhiên, đánh giá từ đoạn mã của bạn, những gì bạn về cơ bản muốn làm là thêm một cạnh giữa hai đỉnh mà bạn biết tên. Điều này cũng có thể được thực hiện bằng cách sử dụng phương thức find của các đối tượng VertexSeq, hoạt động giống như lựa chọn bạn thực hiện nhưng chỉ trả lại đầu tiên phù hợp với đỉnh phù hợp. Vì vậy, bạn chỉ có thể làm:

g.add_edge(g.vs.find(Name="A"), g.vs.find(Name="B")) 

Thậm chí tốt hơn, nếu bạn sử dụng thuộc tính name đỉnh để lưu trữ các tên đỉnh (và không Name - lưu ý các chữ cái viết hoa), bạn thậm chí có thể sử dụng tên riêng của mình mà không cần gọi g.vs.find vì igraph xử lý thuộc tính đỉnh name đặc biệt:

g.add_edge("A", "B") 
+1

Tôi chỉ thử nó vì một chuỗi là tôi phải sử dụng [0] thay vì a, tức là add_edge (a [0], b [0]), Cảm ơn! – Nikhil

+0

Ah, phải, xem các cập nhật của tôi. –