มันเป็นแคคตัสหรือไม่?


23

ในทฤษฎีกราฟแคคตัสเป็นกราฟที่เชื่อมต่อกันซึ่งมีวัฏจักรอย่างง่าย ๆ สองอันที่แตกต่างกันในกราฟส่วนแบ่งที่จุดสุดยอดเดียว

นี่คือกระบองเพชรที่มี 3 รอบง่าย ๆ ที่มีเส้นประ

กราฟกระบองเพชร

กราฟต่อไปนี้คล้ายกับภาพด้านบน แต่ไม่ใช่แคคตัสเพราะจุดยอดสองจุดที่มีสีแดงถูกแชร์โดยรอบง่ายๆสองรอบ

ไม่ใช่กราฟแคคตัส

สิ่งต่าง ๆ อาจมีเล่ห์เหลี่ยมเล็กน้อยตัวอย่างเช่นกราฟต่อไปนี้:

ยังไม่ใช่กราฟของกระบองเพชร

อาจดูเหมือนแคคตัส แต่ไม่ใช่ สามารถแสดงได้โดยเน้นรอบต่อไปนี้:

ไฮไลต์วงจร

รอบนี้ใช้ร่วมกันมากกว่าหนึ่งจุดที่มีจำนวนรอบที่ชัดเจนมากขึ้นในกราฟ

คำนิยาม

  • กราฟที่เชื่อมต่อกันเป็นกราฟที่มีเส้นทางอย่างน้อยหนึ่งเส้นทางระหว่างจุดยอดสองจุดใด ๆ

  • วัฏจักรอย่างง่ายคือเส้นทางบนกราฟที่เริ่มต้นและสิ้นสุดที่จุดสุดยอดเดียวกันและไม่เยี่ยมจุดสุดยอดมากกว่าหนึ่งครั้ง

  • กราฟที่เรียบง่ายคือกราฟที่ไม่มีทิศทางและไม่มีน้ำหนักซึ่งไม่มีจุดเชื่อมต่อซึ่งกันและกันโดยมีมากกว่าหนึ่งขอบและไม่มีจุดเชื่อมต่อกับตัวเอง กราฟง่าย ๆ เป็นกราฟพื้นฐานที่สุดและเป็นสิ่งที่คนส่วนใหญ่มีความหมายเมื่อพูดถึงกราฟ

งาน

ใช้กราฟอย่างง่ายเป็นอินพุตและตัดสินใจว่าเป็นกราฟ Cactus หรือไม่ คุณควรส่งออกสองค่าที่แตกต่างหนึ่งสำหรับจริงและหนึ่งสำหรับเท็จ คุณสามารถป้อนข้อมูลในรูปแบบที่คุณเห็นว่าเหมาะสม

นี่คือดังนั้นคุณควรตั้งเป้าหมายที่จะลดจำนวนคำตอบลง

กรณีทดสอบ

กรณีทดสอบเป็น Adjacency Matrices


คุณช่วยดูวิธีแก้ปัญหาของฉันได้ไหมแจ้งให้เราทราบว่าถูกต้องหรือไม่? ฉันตกหล่นเหมือนลวดลายที่เห็นได้ชัดเกินไปและฉันพลาดอะไรบางอย่างไป
Shaggy

@Shaggy ฉันอ่าน JavaScript ไม่ได้ถ้าคุณอธิบายฉันอาจจะทำได้
ข้าวสาลีตัวช่วยสร้าง

ฉันสามารถลอง ฉันกำลังตรวจสอบ 2 สิ่ง: 1) eมีองค์ประกอบเดียวและvมี 2 ​​และvเท่ากับองค์ประกอบแรกของeหรือไม่ 2) หรือvเท่ากับชุดสหภาพขององค์ประกอบแรกของแต่ละองค์ประกอบในeหรือไม่ กรณีทดสอบที่สองผ่านการตรวจสอบครั้งแรก ( v=[1,2]=e[0]=[1,2]) และการทดสอบกรณีอื่น ๆ ที่ควรจะตรงกับความจริงที่สองเช่นกรณี # v=[1,2,3,4,5,6]=[e[0][0],e[1][0],e[2][0],e[4][0]]=[1,2,3,4,5,6]4:
Shaggy

@Shaggy สิ่งนี้ใช้ไม่ได้ตัวอย่างเช่นแผนภาพแรกที่ระบุล้มเหลว console.log(f([1,2,3,4,5,6,7,8,9,10,11,12,13])([[1,2],[1,3],[3,4],[2,4],[3,5],[5,6],[6,7],[7,8],[8,5],[7,9],[9,10],[10,11],[11,7],[8,12],[8,13]]))
ข้าวสาลี Wizard

ควรกลับไปว่าtrueหรือfalse?
Shaggy

คำตอบ:


9

Mathematica, 62 ไบต์

Sort@#==#⋃#&[Join@@FindCycle[#,∞,All]]&&ConnectedGraphQ@#&

ตรวจสอบ: (find all cycles, there are no duplicate edges)และ(The graph is a connected graph)


1
gควรจะ#ใช่มั้ย
ngenisis

6
ดังนั้นคุณบอกฉันว่าไม่มีisCactusbuiltin? ฉันผิดหวัง.
แอรอน

ใครบางคนควรเขียนหนึ่ง
Draco18s

คุณควรใส่ Mathematica Simplified เป็นคำตอบแยกต่างหาก
mbomb007

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