การนับสามเหลี่ยมในกราฟทั่วไปสามารถทำได้เพียงเล็กน้อยในเวลาและฉันคิดว่าการทำเร็วกว่านั้นยาก (ยินดีต้อนรับการอ้างอิง) กราฟระนาบเป็นอย่างไร? ต่อไปนี้แสดงให้เห็นว่าขั้นตอนตรงไปตรงมาว่ามันสามารถทำได้ในO ( n log n )เวลา คำถามของฉันคือสองเท่า:
- การอ้างอิงสำหรับขั้นตอนนี้คืออะไร?
- สามารถทำเวลาเชิงเส้นได้หรือไม่?
จากการพิสูจน์อัลกอริธึมของทฤษฎีบทตัวคั่นระนาบของ Lipton-Tarjan เราสามารถทำตามเวลาเชิงเส้นตรงในขนาดของกราฟหาพาร์ทิชันของจุดยอดของกราฟออกเป็นสามชุดซึ่งไม่มีขอบที่จุดปลายเดียวในAและอีกอันในB , Sมีขนาดล้อมรอบด้วยO ( √และA,Bทั้งสองมีขนาดส่วนบนล้อมรอบด้วย 2ของจำนวนจุดยอด ขอให้สังเกตว่าสามเหลี่ยมใด ๆ ในกราฟทั้งโกหกทั้งหมดภายในหรือทั้งหมดภายในBหรือการใช้งานอย่างน้อยหนึ่งจุดสุดยอดของSกับอีกสองจุดจาก∪Sหรือทั้งจำทั้งจากB∪S ดังนั้นจึงพอเพียงที่จะนับจำนวนสามเหลี่ยมในกราฟบนSและเพื่อนบ้านของSในA(และคล้ายกันสำหรับB) ขอให้สังเกตว่าSและA-onebours ทำให้เกิดกราฟk-outer planar (กราฟดังกล่าวเป็นกราฟย่อยของกราฟระนาบของเส้นผ่านศูนย์กลาง4) ดังนั้นการนับจำนวนสามเหลี่ยมในกราฟสามารถทำได้โดยตรงโดยการโปรแกรมแบบไดนามิกหรือโดยการประยุกต์ใช้ทฤษฎีบทของ Courcelle (ฉันรู้ว่าแบบจำลองการนับมีอยู่ในโลก Logspace โดย Elberfeld et al และฉันเดาว่ามันมีอยู่ด้วย ในโลกเวลาเชิงเส้น) นับตั้งแต่สร้างสามเหลี่ยมที่ไม่ได้บอกทิศทางเป็นคุณสมบัติและเนื่องจากการสลายตัวของต้นไม้ที่มีความกว้างล้อมรอบนั้นเป็นเรื่องง่ายที่จะได้รับจากกราฟk -outer planar ที่ฝังตัว
ดังนั้นเราจึงลดปัญหานี้ลงเป็นคู่ของปัญหาซึ่งแต่ละส่วนมีค่าคงที่น้อยลงโดยมีค่าใช้จ่ายของกระบวนการเชิงเส้นเวลา
แจ้งให้ทราบว่าขั้นตอนสามารถขยายไปยังพบการนับจำนวนของอินสแตนซ์ของกราฟที่เชื่อมต่อการแก้ไขภายในข้อมูลกราฟในที่เวลา