Liệt kê tất cả các đồ thị không đẳng hình có kích thước nhất định


30

Tôi muốn liệt kê tất cả các đồ thị vô hướng có kích thước , nhưng tôi chỉ cần một thể hiện của mỗi lớp đẳng cấu . Nói cách khác, tôi muốn liệt kê tất cả các đồ thị không đẳng hình (không định hướng) trên n đỉnh. Tôi có thể làm cái này như thế nào?nn

Chính xác hơn, tôi muốn một thuật toán sẽ tạo ra một chuỗi các đồ thị vô hướng , với thuộc tính sau: với mỗi đồ thị vô hướng G trên n đỉnh, tồn tại một chỉ số i sao cho G là đẳng cấu đến G i . Tôi muốn thuật toán có hiệu quả nhất có thể; nói cách khác, số liệu tôi quan tâm là thời gian chạy để tạo và lặp qua danh sách biểu đồ này. Một mục tiêu thứ yếu là nó sẽ tốt nếu thuật toán không quá phức tạp để thực hiện.G1,G2,,GkGniGGi

Lưu ý rằng tôi cần phải có ít nhất một biểu đồ từ mỗi lớp đẳng cấu, nhưng sẽ ổn nếu thuật toán tạo ra nhiều hơn một thể hiện. Cụ thể, sẽ ổn nếu chuỗi đầu ra bao gồm hai biểu đồ đẳng hình, nếu điều này giúp dễ dàng tìm thấy thuật toán như vậy hoặc cho phép các thuật toán hiệu quả hơn, miễn là nó bao gồm tất cả các biểu đồ có thể.

Ứng dụng của tôi như sau: Tôi có một chương trình mà tôi muốn thử nghiệm trên tất cả các đồ thị có kích thước . Tôi biết rằng nếu hai biểu đồ là đẳng cấu, chương trình của tôi sẽ hoạt động giống nhau trên cả hai (nó sẽ đúng trên cả hai hoặc không chính xác trên cả hai), do đó, nó đủ để liệt kê ít nhất một đại diện từ mỗi lớp đẳng cấu, và sau đó kiểm tra chương trình về những đầu vào đó. Trong ứng dụng của tôi, n khá nhỏ.nn

Một số thuật toán ứng viên tôi đã xem xét:

  • Tôi có thể liệt kê tất cả các ma trận kề, có thể, tất cả các ma trận đối xứng 0 hoặc 1 có tất cả 0 trên các đường chéo. Tuy nhiên, điều này đòi hỏi liệt kê 2 n ( n - 1 ) / 2 ma trận. Nhiều ma trận trong số đó sẽ biểu thị các đồ thị đẳng hình, vì vậy điều này có vẻ như nó đang lãng phí rất nhiều nỗ lực.n×n2n(n1)/2

  • Tôi có thể liệt kê tất cả các ma trận kề có thể, và đối với từng ma trận, hãy kiểm tra xem nó có phải là đẳng cấu với bất kỳ đồ thị nào tôi đã đưa ra trước đó không; nếu nó không phải là đẳng cấu với bất cứ thứ gì xuất ra trước đó, hãy xuất nó. Điều này sẽ rút ngắn đáng kể danh sách đầu ra, nhưng nó vẫn cần ít nhất bước tính toán (ngay cả khi chúng tôi giả sử kiểm tra đẳng cấu đồ thị là siêu nhanh), do đó, số liệu của tôi không tốt hơn nhiều.2n(n1)/2

  • Có thể liệt kê một tập hợp các ma trận kề. Đặc biệt, nếu là một đồ thị trên n đỉnh V = { v 1 , ... , v n } , mà không mất tính tổng quát tôi có thể giả định rằng các đỉnh được sắp xếp sao cho DEG v 1° v 2° v nGnV={v1,,vn}degv1degv2degvn. Nói cách khác, mọi đồ thị là đẳng cấu với một trong đó các đỉnh được sắp xếp theo thứ tự không giảm. Vì vậy, nó chỉ đủ để liệt kê các ma trận kề có tài sản này. Tôi không biết chính xác có bao nhiêu ma trận kề nhau như vậy, nhưng nó ít hơn và chúng có thể được liệt kê với ít hơn 2 n ( n - 1 ) / 2 bước tính toán. Tuy nhiên, điều này vẫn còn rất nhiều dư thừa: nhiều lớp đẳng cấu sẽ vẫn được đề cập nhiều lần, vì vậy tôi nghi ngờ điều này là tối ưu.2n(n1)/22n(n1)/2

Chúng ta có thể làm tốt hơn không? Nếu tôi hiểu chính xác, có khoảng các lớp tương đương của đồ thị không đẳng hình. Chúng ta có thể tìm thấy một thuật toán có thời gian chạy tốt hơn các thuật toán trên không? Khoảng cách giữa chúng tôi có thể nhận được đến ~ 2 n ( n - 1 ) / 2 / n ! chặn dưới? Tôi quan tâm chủ yếu về khả năng di chuyển cho n nhỏ (giả sử, n = 5 hoặc n = 82n(n1)/2/n!2n(n1)/2/n!nn=5n=8hoặc là; đủ nhỏ để người ta có thể chạy một thuật toán như vậy để hoàn thành một cách hợp lý), không quá nhiều về sự tiệm cận đối với lớn .n

Liên quan: Xây dựng ma trận nhị phân không tương đương (mặc dù không may là người ta dường như không nhận được câu trả lời hợp lệ).


1
Afaik, thậm chí số lượng đồ thị có kích thước lên đến đẳng cấu vẫn chưa được biết, vì vậy tôi nghĩ rằng không có khả năng có thuật toán (không vũ phu). Về các thuật toán ứng cử viên của bạn, hãy nhớ rằng chúng tôi không biết thuật toán đa thức thời gian để kiểm tra đẳng cấu đồ thị (afaik), vì vậy, bất kỳ thuật toán nào được cho là chạy trong O ( | output | ) nên tránh phải kiểm tra đẳng cấu ( thường / ngu ngốc). (Ngoài ra, | đầu ra | = Ω ( n | lớp | ) .)nO(|output|)|output|=Ω(n|classes|)
Raphael

@Raphael, (1) Tôi biết chúng ta không biết chính xác số lượng đồ thị có kích thước lên đến đẳng cấu, nhưng vấn đề này không nhất thiết đòi hỏi phải biết điều đó (ví dụ, vì thực tế tôi ổn với sự lặp lại). Tôi không biết tại sao điều đó có nghĩa là không chắc có thuật toán nào tốt hơn thuật toán tôi đưa ra. (2) Vâng, tôi biết không có thuật toán đa thức thời gian đã biết cho đẳng cấu đồ thị, nhưng chúng ta sẽ nói về các giá trị của n như n = 6 ở đây, vì vậy các thuật toán hiện tại có thể sẽ nhanh - và dù sao, tôi chỉ đề cập thuật toán ứng cử viên đó để từ chối nó, vì vậy dù sao nó cũng phải tranh luận. nnn=6
DW

Đối với nhiều nhất là 6, tôi tin rằng sau khi đã chọn số đỉnh và số cạnh và sắp xếp các nhãn đỉnh không thay đổi theo mức độ như bạn đề xuất, thì sẽ có rất ít lớp đẳng cấu có thể có. Tại thời điểm này, việc sắp xếp các trường hợp còn lại bằng cách kiểm tra đẳng cấu vũ lực bằng cách sử dụng ví dụ NAUTY hoặc BLISS. n
Simon

Câu trả lời:


19

Có lẽ cách dễ nhất để liệt kê tất cả các đồ thị không đẳng hình cho số lượng đỉnh nhỏ là tải xuống từ bộ sưu tập của Brendan McKay . Thuật toán liệt kê được mô tả trong bài báo của McKay [1] và hoạt động bằng cách mở rộng các dạng không đẳng cấu có kích thước n-1 theo tất cả các cách có thể và kiểm tra xem đỉnh mới có hợp quy không. Nó được thực hiện như gengtrong trình kiểm tra đẳng cấu đồ thị của McKay nauty.

[1]: BD McKay, Các ứng dụng của một kỹ thuật cho phép liệt kê được dán nhãn , Highwayus Numerantium, 40 (1983) 207-221.


Tôi có một vấn đề. Tôi đang lấy một biểu đồ kích thước n-1và mở rộng nó bằng một đỉnh theo tất cả các cách có thể, như bạn đã nói. Sau đó, tôi kiểm tra xem đỉnh có nhãn chính tắc không, nói 1(đỉnh chính tắc?!). Tuy nhiên, điều gì sẽ xảy ra nếu đồ thị chỉ là đẳng cấu với dạng chính tắc và đỉnh có nhãn khác nhau? Tôi đã thử kiểm tra các biến dạng tự động để xem liệu đỉnh có nhãn 1có cùng quỹ đạo hay không, nhưng sau đó tôi kết thúc với biểu đồ hai lần trong danh sách của mình. Bài báo không thực sự giúp tôi. Ngoài ra, mã nguồn của geng là không thể đọc được do tất cả những tối ưu hóa nhị phân và hầu như không có bất kỳ bình luận nào.
Alex

1
@Alex Bạn chắc chắn muốn phiên bản kiểm tra xác định xem đỉnh mới có cùng quỹ đạo với 1. Bạn có thể đưa ra một ví dụ trong đó điều này tạo ra hai biểu đồ đẳng hình không? Có lẽ điều này sẽ tốt hơn như một câu hỏi mới.
David Eisenstat

Được rồi cảm ơn bạn rất nhiều! Tôi đoán trong trường hợp đó "mở rộng theo tất cả các cách có thể" cần bằng cách nào đó xem xét tính tự động của đồ thị với n-1các đỉnh? ví dụ n = 3 và đồ thị trước của tôi là P2. Sau đó, hai trường hợp tôi nối đỉnh thứ ba với một trong các đỉnh trước đó tất nhiên sẽ dẫn đến cùng một biểu đồ P3. Bạn có thể nhanh chóng giải thích làm thế nào để "mở rộng theo tất cả các cách có thể" hay tôi nên hỏi điều này như một câu hỏi khác? (Ngoài ra, đôi khi tôi bối rối về những gì xảy ra, vì chương trình của tôi cần tìm ra sự không đồng hình của một loại biểu đồ đặc biệt, khiến mọi thứ phức tạp hơn một chút)
Alex

@Alex Vâng, có vẻ như chính phần mở rộng cần phải hợp quy. Có lẽ đáng giá một câu hỏi mới, vì tôi không nhớ làm thế nào điều này hoạt động ra khỏi đỉnh đầu của tôi.
David Eisenstat

1
Trang chủ Nauty
Guy Coder

4

Tôi đề xuất một cải tiến về ý tưởng thứ ba của bạn: Điền vào hàng ma trận kề, theo dõi các đỉnh tương đương với mức độ và độ phụ của chúng với các đỉnh được điền trước đó. Vì vậy, ban đầu các lớp tương đương sẽ bao gồm tất cả các nút có cùng mức độ.
Khi một đỉnh mới được lấp đầy chỉ liền kề với một số nút tương đương, bất kỳ lựa chọn nào cũng dẫn đến các đại diện từ cùng một lớp isomrphism. Vì vậy, chúng tôi chỉ xem xét việc gán, trong đó đỉnh hiện tại được điền liền kề với các đỉnh tương đương có số cao nhất (và chia lớp tương đương thành hai cho quá trình còn lại).

n<6
(1,2)(3,4)n=6

Việc triển khai thuật toán ngây thơ này sẽ đi vào ngõ cụt, trong đó hóa ra ma trận kề không thể được điền theo tập hợp các mức độ và các bài tập trước đó. Nó có thể là giá trị một số nỗ lực để phát hiện / lọc những cái này sớm. Một vài ý tưởng:

  • Nếu tổng độ là số lẻ, chúng sẽ không bao giờ tạo thành biểu đồ
  • Điền vào các mục cho các đỉnh cần được kết nối với tất cả / không có các đỉnh còn lại ngay lập tức.

3

Những giấy tờ có thể được quan tâm.

"Về biểu diễn cô đọng của đồ thị", Gyorgy Turan, Toán học ứng dụng rời rạc, Tập 8, Số 3, tháng 7 năm 1984, trang 289-294 http://www.scTHERirect.com/science/article/pii/0166218X84901264

"Trình bày ngắn gọn về đồ thị không ghi nhãn chung", Moni Naor, Toán học ứng dụng rời rạc, Tập 28, Số 3, Tháng 9 năm 1990, trang 303-307 http://www.scTHERirect.com/science/article/pii/0166218X9090011Z

Chúng trình bày các hàm mã hóa và giải mã để mã hóa một biểu đồ có nhãn đỉnh để hai biểu đồ đó ánh xạ tới cùng một từ mã khi và chỉ khi một kết quả từ việc hoán vị các nhãn của đỉnh kia.

Hơn nữa, nó đã được chứng minh rằng các chức năng mã hóa và giải mã là hiệu quả.

Bài báo đầu tiên đề cập đến đồ thị phẳng. Trong bài báo thứ hai, hạn chế phẳng được loại bỏ.

EDIT: Bài viết này cũng có thể có liên quan:

Biểu đồ đẳng cấu trong thời gian đa thức, Laszlo Babai, Đại học Chicago, Bản in trên arXiv, ngày 9 tháng 12 năm 2015 http://arxiv.org/pdf/1512.03547v1.pdf

Thông báo về kết quả của Babai đã đưa ra tin tức: https://www.sciencenews.org/article/new-alerskym-cracks-graph-probols

Nhưng có lẽ tôi đã nhầm lẫn khi đặt câu hỏi của OP với ba bài báo này? OP muốn liệt kê các đồ thị không đẳng hình, nhưng vẫn có thể hữu ích khi có các phương pháp hiệu quả để xác định khi hai đồ thị là đẳng cấu?


Tôi đánh giá cao suy nghĩ này, nhưng tôi e rằng tôi không hỏi làm thế nào để xác định xem hai biểu đồ có phải là đẳng cấu hay không. Tôi thực sự đang hỏi làm thế nào để liệt kê các đồ thị không đẳng hình. Mô tả các thuật toán để kiểm tra xem hai biểu đồ có phải là đẳng cấu không thực sự giúp tôi, tôi sợ - mặc dù vậy, cảm ơn vì đã thử!
DW

Turan và Naor (trong các bài báo tôi đã đề cập ở trên) xây dựng các hàm của loại bạn mô tả, tức là ánh xạ biểu đồ thành một đại diện chính tắc của lớp tương đương mà biểu đồ đó thuộc về. Nếu bạn có thể liệt kê những đại diện kinh điển đó, thì có vẻ như điều đó sẽ giải quyết vấn đề của bạn.
Simon

Babai rút lại yêu cầu của thời gian chạy quasipolynomial . Rõ ràng đã có một lỗi trong phân tích.
Raphael

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.