2012-03-31 29 views
10

Có ai biết về bất kỳ giấy tờ, văn bản, hoặc các tài liệu khác thảo luận bằng cách sử dụng một siêu đồ thị để thực hiện hoặc đại diện cho một máy Turing không xác định? Họ có thực tế tương đương không?Siêu đại diện có thể đại diện cho máy Turing không xác định không?

Tôi khá chắc chắn rằng một siêu đồ thị có thể đúng và hoàn toàn đại diện cho các chuyển đổi trạng thái trạng thái của một máy Turing không xác định, chẳng hạn. Nhưng tôi đã không thể tìm thấy bất cứ điều gì trong in ấn có thể xác minh điều này. Điều này dường như với tôi như một mối quan hệ rõ ràng như vậy, tuy nhiên thực tế là tôi không tìm thấy nghệ thuật trước đây làm cho tôi nghĩ rằng tôi đang đi sai đường. (Nó cũng có thể là trường hợp mà những gì tôi đang tìm kiếm chỉ là không thể truy cập đủ cho tôi để hiểu những gì nó nói.) ;-)

Tại sao tôi hỏi: Tôi đang làm việc trên một gói mã nguồn mở mà không lưu trữ dữ liệu phân tán và tính toán phân tán trong một mạng ngang hàng. Tôi đang tìm cấu trúc dữ liệu nguyên thủy nhất có thể hỗ trợ chức năng cần thiết. Cho đến nay, một siêu đồ thị phân tán trông đầy hứa hẹn. Lý do của tôi là, nếu một siêu đồ thị có thể hỗ trợ một cái gì đó chung chung như một máy Turing không xác định, thì nó sẽ có thể hỗ trợ một DSL Turing-complete cấp cao hơn. (Có nhiều lý do khác mà đoạn "không xác định" có thể có giá trị đối với tôi nữa, phải làm với việc kiểm soát phiên bản của dữ liệu phân tán và/hoặc kết quả tính toán. Cố gắng tránh một luận án ở đây)

Câu trả lời một phần:

+0

Chính xác bạn muốn đại diện bằng đồ thị siêu văn bản là gì? Thật dễ dàng để mô tả mối quan hệ chuyển tiếp trạng thái với các bảng lồng nhau hoặc với biểu đồ có nhãn được chỉ dẫn. Chỉ cần thực hiện các cặp '(Trạng thái, Ký hiệu) 'làm các nút và các vòng cung nhãn bằng' Di chuyển Trái' hoặc' Di chuyển sang phải'. –

+0

@max, vâng, đó là khá nhiều những gì tôi đã có trong tâm trí - hoặc là phiên bản của một số biến thể khác của quy tắc Turing 5-tuple bình thường. Áp dụng cho máy Turing không xác định, các vòng cung (cạnh) dĩ nhiên sẽ có nhiều đầu, chỉ vào nhiều nút tiếp theo có thể. – stevegt

+0

để thể hiện ** trạng thái TM ** đầy đủ (tức là bằng cách nào đó thực hiện biểu diễn siêu đại của bạn), bạn cũng cần phải lưu trữ trạng thái của các ô băng đã truy cập. –

Trả lời

0

Một hypergraph chỉ là một đồ thị G=(V,E) nơi V là tập hợp các đỉnh (nút) và E là một tập hợp con của Powerset của V. Nó là một cấu trúc dữ liệu.

Vì vậy, một đồ thị phổ biến chỉ là một đồ thị với thứ hạng 2. (nghĩa là mỗi bộ trong E chứa chính xác hai đỉnh). Một đồ thị siêu trực tiếp sử dụng các cặp (X,Y) làm các cạnh ở đó các số XY là các bộ.

Nếu bạn muốn lập mô hình máy turing thì bạn cần lập mô hình 'băng'. Bạn có muốn băng 'nhúng' trong biểu đồ không? Tôi nghĩ rằng bạn có thể có nhiều may mắn hơn suy nghĩ về luận án Church-Turing (Alonso Church, Lambda calculus). Phép tính Lambda là một dạng của hệ thống viết lại và chắc chắn có một chi nhánh sử dụng viết lại đồ thị (và hypergrpahs). Tất nhiên các quá trình chuyển đổi có thể được mô hình hóa như một đồ thị (tôi không chắc chắn những gì bạn có trong tâm trí, nhưng cách tiếp cận thẳng về phía trước không thực sự hữu ích) nếu bạn đã mô hình hóa bình thường bạn có thể sẽ tạo một từ điển/hashmap với tuples là các khóa (State, Symbol) và các giá trị đang được (State, Rewrite, Left | Right).ví dụ:

states = {1,2,3} 
symbols = {a,b,c} 
moves = L, R 
delta = { (1,a) -> (1,b,R) 
      (1,b) -> (2,c,L) 
      ... 
} 

vì vậy nếu bạn muốn đồ thị, trước tiên bạn cần V = trạng thái U ký hiệu U di chuyển. Rõ ràng họ cần phải được phân chia bộ. như {1, a} -> {1, b, R} là theo định nghĩa tương đương với {a, 1} -> {b, R, 1}, vv

states = {1,2,3} 
symbols = {a,b,c} 
moves = L, R 
V = {1,2,3,a,b,c,L,R} 
E = { ({1,a},{1,b,R}) 
     ({b,1},{L,2,c}) 
     ... 
} 
turing-hypergraph = (V,E) 

Như tôi đã đề cập trước đó, nhìn lập biểu đồ viết lại hoặc viết lại từ.