2010-12-14 18 views

Trả lời

11

Cách đơn giản nhất của đại diện cho nó (theo ý kiến ​​của tôi) là bằng cách sử dụng một dict của mảng danh sách:

graph = {} 
graph[node_id] = [other_node_id for other_node_id in neighbors(node_id)] 

Một cách đơn giản để tìm chu kỳ là bằng cách sử dụng một BF hoặc tìm kiếm DF:

def df(node): 
    if visited(node): 
     pass # found a cycle here, do something with it 
    visit(node) 
    [df(node_id) for node_id in graph[node]] 

Tuyên bố từ chối trách nhiệm: đây thực sự là bản phác thảo; neighbors(), visited()visit() chỉ là các núm vú giả để thể hiện cách thuật toán trông như thế nào.

+1

bằng từ điển của mảng u nghĩa là từ điển của danh sách? –

+0

@Bunny Rabbit erm .. yes. Xin lỗi, tôi đã sử dụng sai tên>< –

4

Python Graph API là một nơi tốt để bắt đầu.

Ví dụ: NetworkX có triển khai thuật toán của Kruskal để tìm cây bao trùm tối thiểu.

Nếu bạn muốn phát minh lại bánh xe và tự làm, điều đó cũng có thể.

+3

vâng tôi đang cố gắng phát minh ra bánh xe ít nhất lần đầu tiên. –

Các vấn đề liên quan