แจกแจงกราฟที่ไม่ใช่ isomorphic ทั้งหมดในขนาดที่กำหนด


30

ฉันต้องการที่จะระบุกราฟไม่มีทิศทางทั้งหมดของขนาดแต่ฉันต้องการเพียงหนึ่งตัวอย่างของแต่ละชั้นเรียนมอร์ฟ กล่าวอีกนัยหนึ่งฉันต้องการระบุกราฟที่ไม่ใช่ isomorphic (undirected) ทั้งหมดในn vertices ฉันจะทำสิ่งนี้ได้อย่างไรnn

แม่นยำมากขึ้นฉันต้องการขั้นตอนวิธีการที่จะสร้างลำดับของกราฟไม่มีทิศทางมีคุณสมบัติดังต่อไปสำหรับทุกกราฟไม่มีทิศทางGบนnจุดมีอยู่ดัชนีฉันเช่นที่Gคือ isomorphic เพื่อGฉัน ฉันต้องการอัลกอริทึมให้มีประสิทธิภาพมากที่สุด กล่าวอีกนัยหนึ่งตัวชี้วัดที่ฉันสนใจคือเวลาที่ใช้ในการสร้างและทำซ้ำผ่านรายการของกราฟนี้ เป้าหมายรองคือจะดีถ้าอัลกอริทึมไม่ซับซ้อนเกินกว่าที่จะนำมาใช้G1,G2,,GkGniGGi

โปรดสังเกตว่าฉันต้องมีกราฟอย่างน้อยหนึ่งกราฟจากแต่ละคลาส isomorphism แต่มันก็โอเคถ้าอัลกอริทึมสร้างมากกว่าหนึ่งอินสแตนซ์ โดยเฉพาะอย่างยิ่งมันก็โอเคถ้าลำดับเอาต์พุตประกอบด้วยกราฟ isomorphic สองกราฟถ้าสิ่งนี้ช่วยให้ค้นหาอัลกอริทึมดังกล่าวได้ง่ายขึ้นหรือทำให้อัลกอริทึมมีประสิทธิภาพมากขึ้นตราบใดที่กราฟนั้นครอบคลุมกราฟที่เป็นไปได้ทั้งหมด

ใบสมัครของฉันจะเป็นดังนี้: ฉันมีโปรแกรมที่ฉันต้องการที่จะทดสอบกราฟทั้งหมดของขนาดnฉันรู้ว่าถ้าสองกราฟ isomorphic โปรแกรมของฉันจะทำงานเหมือนกันทั้งคู่ (มันอาจจะถูกต้องทั้งบนหรือไม่ถูกต้องทั้งสองอย่าง) ดังนั้นมันจะพอเพียงที่จะระบุตัวแทนอย่างน้อยหนึ่งตัวแทนจากแต่ละชั้น isomorphism แล้วทดสอบ โปรแกรมในอินพุตเหล่านั้น ในใบสมัครของฉันnค่อนข้างเล็กnn

อัลกอริทึมผู้สมัครบางส่วนที่ฉันได้พิจารณา:

  • ฉันสามารถระบุเมทริกซ์ adjacency ที่เป็นไปได้ทั้งหมดเช่นเมทริกซ์สมมาตร 0-or-1 ทั้งหมดที่มี 0 ทั้งหมดบน diagonals อย่างไรก็ตามจำเป็นต้องมีเมทริกซ์2 n ( n - 1 ) / 2 เมทริกซ์เหล่านั้นจำนวนมากจะแสดงกราฟไอโซมอร์ฟิคดังนั้นดูเหมือนว่ามันจะต้องใช้ความพยายามอย่างมากn×n2n(n1)/2

  • ฉันสามารถแจกแจงเมทริกซ์ adjacency ที่เป็นไปได้ทั้งหมดและสำหรับแต่ละรายการทดสอบว่า isomorphic กับกราฟใด ๆ ที่ฉันเคยเอาท์พุทมาก่อนหรือไม่ ถ้ามันไม่ได้เป็นมอร์ฟิคไปยังเอาท์พุทอะไรมาก่อนก็เอาท์พุทมัน นี่จะทำให้รายการผลลัพธ์สั้นลงอย่างมาก แต่ก็ยังต้องการขั้นตอนการคำนวณอย่างน้อยขั้นตอน (แม้ว่าเราจะถือว่าการตรวจสอบ isomorphism กราฟนั้นเร็วมาก) ดังนั้นมันจึงไม่ได้ดีไปกว่านี้2n(n1)/2

  • เป็นไปได้ที่จะระบุชุดย่อยของเมทริกซ์คำคุณศัพท์ โดยเฉพาะอย่างยิ่งถ้าเป็นกราฟnจุดV = { โวลต์1 , ... , V n }โดยไม่สูญเสียของทั่วไปผมสามารถสรุปได้ว่าจุดที่มีการจัดเพื่อให้องศาวี1องศาวี2องศาV nGnV={v1,,vn}degv1degv2degvn. กล่าวอีกนัยหนึ่งกราฟทุกตัวคือ isomorphic ไปยังที่ซึ่งจุดยอดถูกจัดเรียงตามลำดับที่ไม่ลดลง ดังนั้นจึงพอเพียงที่จะระบุเมทริกซ์ adjacency ที่มีคุณสมบัตินี้ ฉันไม่รู้แน่ชัดว่ามีเมทริกซ์ adjacency กี่ตัว แต่มีน้อยกว่าและพวกมันสามารถระบุได้น้อยกว่า2 n ( n - 1 ) / 2ขั้นของ การคำนวณ อย่างไรก็ตามสิ่งนี้ยังคงทิ้งความซ้ำซ้อนไว้มากมาย: คลาสมอร์ฟิซึ่มหลายชั้นจะยังคงถูกปกคลุมอยู่หลายครั้งดังนั้นฉันสงสัยว่ามันดีที่สุด2n(n1)/22n(n1)/2

เราทำได้ดีกว่านี้ไหม ถ้าฉันเข้าใจถูกต้องมีประมาณคลาสที่เท่าเทียมกันของกราฟที่ไม่ใช่ isomorphic เราสามารถหาอัลกอริทึมที่เวลาทำงานดีกว่าอัลกอริทึมด้านบนได้หรือไม่? วิธีการปิดเราสามารถได้รับการ~ 2 n ( n - 1 ) / 2 / n ! ขอบเขตที่ต่ำกว่า? ฉันสนใจหลักเกี่ยวกับความสามารถในการจัดการได้สำหรับn ตัวเล็ก ๆ(เช่น, n = 5หรือn = 82n(n1)/2/n!2n(n1)/2/n!nn=5n=8หรือไม่ก็; พอขนาดเล็กที่หนึ่งฟังสามารถเรียกใช้อัลกอริทึมดังกล่าวจะเสร็จสิ้นเป็นพิเศษ), ไม่มากเกี่ยวกับ asymptotics สำหรับขนาดใหญ่nn

ที่เกี่ยวข้อง: การสร้างเมทริกซ์ไบนารีไม่เท่ากัน (แต่น่าเสียดายที่ดูเหมือนว่าจะไม่ได้รับคำตอบที่ถูกต้อง)


1
Afaik แม้จะไม่รู้กราฟของขนาดถึง isomorphism ดังนั้นฉันคิดว่ามันไม่น่าเป็นไปได้ที่จะมีอัลกอริธึมที่ไม่ใช่เดรัจฉาน เกี่ยวกับอัลกอริทึมผู้สมัครของคุณโปรดจำไว้ว่าเราไม่ทราบอัลกอริทึมแบบพหุนามเวลาสำหรับการตรวจสอบกราฟมอร์ฟ (isa) ดังนั้นอัลกอริทึมใด ๆ ที่ควรจะทำงานในO ( |เอาท์พุท| )ควรหลีกเลี่ยงการตรวจสอบ มักจะ / ซึมกะทือ) (เช่น|เอาท์พุท| = Ω ( n |คลาส| ) )nO(|output|)|output|=Ω(n|classes|)
Raphael

@ ราฟาเอล (1) ฉันรู้ว่าเราไม่ทราบจำนวนที่แน่นอนของกราฟขนาดถึงมอร์ฟิซึ่มส์ แต่ปัญหานี้ไม่จำเป็นต้องรู้ว่า (เช่นเพราะความจริงแล้วฉันตกลงกับการทำซ้ำ) ฉันไม่รู้ว่าทำไมมันถึงมีความเป็นไปได้ที่จะมีอัลกอริทึมที่ดีกว่าที่ฉันเคยให้ (2) ใช่ฉันรู้ว่าไม่มีอัลกอริทึมพหุนามที่รู้จักสำหรับกราฟมอร์ฟิซึ่ม แต่เราจะพูดถึงค่าของnเช่นn = 6ที่นี่ดังนั้นอัลกอริทึมที่มีอยู่อาจจะเร็ว - และต่อไปฉันเพียงกล่าวถึง อัลกอริทึมของผู้สมัครนั้นจะปฏิเสธมันดังนั้นมันจึงเป็นสิ่งที่สงสัย nnn=6
DW

สำหรับมากที่สุด 6 ฉันเชื่อว่าหลังจากเลือกจำนวนจุดยอดและจำนวนขอบแล้วสั่งให้จุดยอดป้ายไม่ลดลงตามระดับที่คุณแนะนำจากนั้นจะมีคลาสมอร์มอร์ฟิสชั่นน้อยมาก ณ จุดนี้อาจเป็นไปได้ที่จะจัดเรียงกรณีที่เหลือโดยการตรวจสอบมอร์ฟิซึ่มแบบแรงเดรัจฉานโดยใช้เช่น NAUTY หรือ BLISS n
Simon

คำตอบ:


19

น่าจะเป็นวิธีที่ง่ายที่สุดในการระบุทุกกราฟไม่ใช่ isomorphic สำหรับการนับยอดเล็ก ๆ คือการดาวน์โหลดได้จากการเก็บเบรนแดนแม็คเคย์ อัลกอริทึมการแจงนับอธิบายไว้ในกระดาษของ McKay [1] และทำงานโดยการขยาย non-isomorphs ขนาด n-1 ในวิธีที่เป็นไปได้ทั้งหมดและตรวจสอบเพื่อดูว่าจุดสุดยอดใหม่เป็นที่ยอมรับหรือไม่ มันนำมาใช้เป็นในการตรวจสอบมอร์ฟกราฟแม็คเคย์gengnauty

[1]: BD McKay, การประยุกต์ใช้เทคนิคในการระบุการติดฉลาก , Congressus Numerantium, 40 (1983) 207-221


ฉันมีปัญหา. ฉันกำลังวาดกราฟขนาดn-1และขยายโดยจุดยอดในรูปแบบที่เป็นไปได้ทั้งหมดตามที่คุณพูด จากนั้นฉันจะตรวจสอบว่าจุดสุดยอดมีป้ายชื่อบัญญัติหรือไม่พูด1(จุดสุดยอดแบบบัญญัติ?!) อย่างไรก็ตามถ้ากราฟเป็น isomorphic เฉพาะกับรูปแบบบัญญัติและจุดยอดมีป้ายชื่อที่แตกต่างกันอย่างไร ฉันได้ลองตรวจสอบ automorphisms เพื่อดูว่าจุดยอดที่มีป้ายชื่อ1อยู่ในวงโคจรเดียวกันหรือไม่ แต่จากนั้นฉันก็ลงเอยด้วยกราฟสองครั้งในรายการของฉัน กระดาษไม่ได้ช่วยฉันจริงๆ นอกจากนี้ซอร์สโค้ดของเกิงนั้นไม่สามารถอ่านได้เนื่องจากการปรับให้เหมาะสมแบบไบนารีทั้งหมดและแทบไม่แสดงความคิดเห็นใด ๆ
อเล็กซ์

1
@Alex คุณต้องการรุ่นของการตรวจสอบที่กำหนดว่าจุดสุดยอดใหม่นั้นอยู่ในวงโคจรเดียวกับ 1 คุณช่วยยกตัวอย่างที่ทำให้เกิดกราฟ isomorphic สองอันได้ไหม อาจจะดีกว่าถ้าเป็นคำถามใหม่
David Eisenstat

โอเคขอบคุณมาก! ฉันเดาว่าในกรณีนี้ "การขยายในทุกวิถีทางที่เป็นไปได้" จำเป็นต้องพิจารณาถึงการเปลี่ยนแปลงของกราฟด้วยn-1จุดยอดหรือไม่? เช่น n = 3 และกราฟก่อนหน้าของฉันคือ P2 จากนั้นทั้งสองกรณีที่ฉันเข้าร่วมจุดสุดยอดที่สามกับหนึ่งในจุดยอดก่อนหน้านี้แน่นอนจะส่งผลให้กราฟ P3 เดียวกัน คุณสามารถอธิบายวิธีการ "ยืดออกไปได้อย่างเหมาะสม" หรือฉันควรถามคำถามนี้เป็นคำถามอื่นได้หรือไม่ (นอกจากนี้บางครั้งฉันสับสนเกี่ยวกับสิ่งที่เกิดขึ้นเนื่องจากโปรแกรมของฉันต้องการค้นหากราฟที่ไม่มีความผิดปกติของรูปแบบพิเศษซึ่งทำให้สิ่งต่าง ๆ มีความซับซ้อนมากขึ้น)
อเล็กซ์

@Alex ใช่ดูเหมือนว่าส่วนขยายของตัวเองต้องเป็นที่ยอมรับ น่าจะเป็นคำถามใหม่ที่คุ้มค่าเนื่องจากฉันจำไม่ได้ว่าวิธีนี้ทำงานได้ดีแค่ไหน
David Eisenstat

1
หน้าแรกของNauty
Guy Coder

4

ฉันเสนอการปรับปรุงในแนวคิดที่สามของคุณ: เติมเมทริกซ์ adjacency ทีละแถวติดตามจุดยอดที่เทียบเท่ากับระดับและ adjacency ของจุดยอดที่บรรจุไว้ก่อนหน้านี้ ดังนั้นในขั้นต้นคลาสที่เท่าเทียมกันจะประกอบด้วยโหนดทั้งหมดที่มีระดับเดียวกัน
เมื่อจุดสุดยอดที่เพิ่งเติมนั้นอยู่ติดกับโหนดที่เท่ากันบางตัวเลือกใด ๆ จะนำไปสู่ตัวแทนจากคลาส isomrphism เดียวกัน ดังนั้นเราจะพิจารณาเฉพาะการมอบหมายที่จุดยอดที่เต็มไปในปัจจุบันอยู่ติดกับจุดยอดที่เทียบเท่ากับจำนวนสูงสุด (และแบ่งคลาสความเท่าเทียมเป็นสองสำหรับกระบวนการที่เหลือ)

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

การใช้อัลกอริธึมที่ไร้เดียงสาจะพบจุดจบตายซึ่งปรากฎว่าเมทริกซ์คำคุณศัพท์ไม่สามารถเติมเต็มได้ตามชุดองศาที่กำหนดและการบ้านก่อนหน้า มันอาจจะคุ้มค่ากับความพยายามในการตรวจจับ / กรองก่อน ความคิดบางอย่าง:

  • หากผลรวมขององศาเป็นเลขคี่พวกเขาจะไม่มีวันสร้างกราฟ
  • กรอกข้อมูลสำหรับจุดยอดที่ต้องเชื่อมต่อกับจุดยอดที่เหลือทั้งหมดทันที

3

เอกสารเหล่านี้อาจเป็นที่สนใจ

"ในการแสดงกราฟอย่างย่อ", Gyorgy Turan, คณิตศาสตร์ประยุกต์แบบไม่ต่อเนื่อง, เล่มที่ 8, ฉบับที่ 3, กรกฎาคม 2527, หน้า 289-294, http://www.sciencedirect.com/science/article/pii/0166218X84901264

"การบรรยายสั้น ๆ ของกราฟที่ไม่มีป้ายกำกับทั่วไป", Moni Naor, คณิตศาสตร์ประยุกต์แบบไม่ต่อเนื่อง, เล่มที่ 28, ฉบับที่ 3, กันยายน 1990, หน้า 303-307 http://www.sciencedirect.com/science/article/pii/0166218X9090011Z

พวกเขานำเสนอฟังก์ชั่นการเข้ารหัสและถอดรหัสสำหรับการเข้ารหัสกราฟจุดสุดยอดเพื่อให้สองกราฟดังกล่าวแมปไป codeword เดียวกันถ้าหากเพียงอย่างเดียวเป็นผลมาจากการอนุญาตให้ฉลากจุดสุดยอดของอีก

ยิ่งไปกว่านั้นมันพิสูจน์แล้วว่าฟังก์ชั่นการเข้ารหัสและถอดรหัสมีประสิทธิภาพ

กระดาษแผ่นแรกเกี่ยวข้องกับกราฟระนาบ ในบทความที่สองข้อ จำกัด ของ planarity จะถูกลบออก

แก้ไข: กระดาษนี้อาจเกี่ยวข้อง:

กราฟมอร์ฟิซึ่มในเวลาเสมือนโพลิโนเมียล, Laszlo Babai, มหาวิทยาลัยชิคาโก, พิมพ์บน arXiv, 9 ธันวาคม 2015 http://arxiv.org/pdf/1512.03547v1.pdf

การประกาศผลของ Babai ทำให้มีข่าว: https://www.sciencenews.org/article/new-algorithm-cracks-graph-problem

แต่บางทีฉันอาจเข้าใจผิดที่จะไขปัญหา OPs กับเอกสารทั้งสามนี้? OP ต้องการระบุกราฟที่ไม่ใช่ isomorphic แต่อาจเป็นประโยชน์ที่จะมีวิธีที่มีประสิทธิภาพในการพิจารณาว่ากราฟสองรายการนั้น isomorphic หรือไม่


ฉันชอบความคิดนี้ แต่ฉันเกรงว่าฉันไม่ได้ถามว่าจะตรวจสอบว่ากราฟสองกราฟนั้นมีความผิดปกติหรือไม่ ฉันกำลังถามถึงวิธีการแจกแจงกราฟที่ไม่ใช่ isomorphic การอธิบายอัลกอริธึมสำหรับการทดสอบว่ากราฟสองกราฟนั้น isomorphic ไม่ได้ช่วยฉันจริง ๆ ฉันเกรง - ขอบคุณที่ลองดู!
DW

Turan และ Naor (ในเอกสารที่ฉันพูดถึงข้างต้น) สร้างฟังก์ชั่นของประเภทที่คุณอธิบายคือซึ่งแมปกราฟลงในตัวแทนที่เป็นที่ยอมรับของชั้นเทียบเท่าที่กราฟนั้นเป็นของ หากคุณสามารถระบุตัวแทนที่เป็นที่ยอมรับได้ดูเหมือนว่านั่นจะช่วยแก้ปัญหาของคุณได้
Simon

Babai ถอนข้อเรียกร้องของรันไทม์ เห็นได้ชัดว่ามีข้อผิดพลาดในการวิเคราะห์
กราฟิลส์

1

มีกระดาษจากต้นยุคที่เกี่ยวข้องกับคำถามนี้:

อัลกอริทึมที่มีประสิทธิภาพสำหรับการแสดงรายการกราฟที่ไม่มีป้ายกำกับโดย Leslie Goldberg

วิธีการนี้รับประกันได้ว่าตัวแทนหนึ่งคนของแต่ละชั้น isomorphism นั้นมีการแจกแจงและมีเพียงความล่าช้าพหุนามระหว่างการสร้างกราฟสองกราฟที่ตามมา

วิธีที่เสนอในที่นี้ไม่อนุญาตให้มีการรับประกันความล่าช้าดังกล่าว: อาจมีหลายวิธีในการอธิบาย n) เมทริกซ์คำคุณศัพท์ที่ถูกแจกแจงและพบว่าเป็นมอร์ฟิกไปยังกราฟที่แจกแจงก่อนหน้านี้ก่อนที่จะมีการค้นพบคลาสมอร์ฟิซึ่มส์ใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.