กลับไปหน้าบทความ

อ่าน 2 นาที

การอ้างอิงแบบวงกลม

การ อ้างอิงแบบวงกลม (หรือ วงจรการอ้างอิง [ 1 ] ) คือชุดของ การอ้างอิง ที่วัตถุสุดท้ายอ้างอิงถึงวัตถุแรก ส่งผลให้เกิดวงปิด

การอ้างอิงแบบวงกลม

การอ้างอิงแบบวงกลม (หรือวงจรการอ้างอิง[ 1 ] ) คือชุดของการอ้างอิงที่วัตถุสุดท้ายอ้างอิงถึงวัตถุแรก ส่งผลให้เกิดวงปิด

การอ้างอิงแบบวงกลม (สีแดง)

ตัวอย่างง่ายๆ

คนแปลกหน้าถามคนท้องถิ่นว่าห้องสมุดประจำเมืองอยู่ที่ไหน "อยู่ตรงหน้าไปรษณีย์เลย" คนท้องถิ่นตอบ คนแปลกหน้าพยักหน้า แล้วถามต่อว่า "แล้วไปรษณีย์อยู่ไหนล่ะ?"

"อ๋อ ง่ายมากเลย" ชาวบ้านตอบ "มันอยู่ด้านหลังห้องสมุดนี่เอง!"

ในภาษา

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

พี่ชายของเธอให้ลูกแมวตัวหนึ่งแก่เธอ และน้องสาวของเขาก็ขอบคุณเขาสำหรับลูกแมวตัวนั้น

เป็นวงกลม แต่ก็ไม่ได้ไร้ความหมาย อันที่จริง อาจกล่าวได้ว่าการอ้างอิงตนเองเป็นผลสืบเนื่องที่จำเป็นของกฎแห่งการไม่ขัดแย้ง ของอริสโตเติล ซึ่ง เป็นสัจพจน์ทางปรัชญาพื้นฐานในมุมมองนี้ หากปราศจากการอ้างอิงตนเองตรรกะและคณิตศาสตร์ก็เป็นไปไม่ได้ หรืออย่างน้อยก็ไม่มีประโยชน์[ 2 ] [ 3 ]

ในการเขียนโปรแกรมคอมพิวเตอร์

การอ้างอิงแบบวนซ้ำสามารถเกิดขึ้นได้ในการเขียนโปรแกรมคอมพิวเตอร์เมื่อโค้ดส่วนหนึ่งต้องการผลลัพธ์จากอีกส่วนหนึ่ง แต่โค้ดส่วนนั้นก็ต้องการผลลัพธ์จากส่วนแรกเช่นกัน ตัวอย่างเช่น ฟังก์ชัน posn และ plus1 ในโปรแกรม Python ต่อไปนี้ประกอบกันเป็นการอ้างอิงแบบวนซ้ำ:

def posn ( k : int ) -> int : if k < 0 : return plus1 ( k ) return kdef plus1 ( n : int ) -> int : return posn ( n + 1 )

การอ้างอิงแบบวนซ้ำ เช่นตัวอย่างข้างต้น อาจให้ผลลัพธ์ที่ถูกต้องหากมีเงื่อนไขการสิ้นสุด หากไม่มีเงื่อนไขการสิ้นสุด การอ้างอิงแบบวนซ้ำจะนำไปสู่สภาวะที่เรียกว่าlivelockหรือลูปอนันต์ซึ่งหมายความว่าในทางทฤษฎีแล้วมันอาจทำงานไปเรื่อยๆ อย่าง ไม่มีที่สิ้นสุด

def posn ( k : int ) -> int : return plus1 ( k )def plus1 ( n : int ) -> int : return posn ( n + 1 )

ในมาตรฐาน ISO ข้อจำกัดความสมบูรณ์แบบวงกลมของ SQL ได้รับการสนับสนุนโดยปริยายภายในตารางเดียว สำหรับข้อจำกัดแบบวงกลมระหว่างหลายตาราง (เช่น คีย์ต่างประเทศ) สามารถทำได้โดยการกำหนดข้อจำกัดเป็นแบบเลื่อนได้ (ดูCREATE TABLEสำหรับ PostgreSQL และตัวอย่างข้อจำกัด DEFERRABLEสำหรับ Oracle) ในกรณีนั้น ข้อจำกัดจะถูกตรวจสอบเมื่อสิ้นสุดธุรกรรม ไม่ใช่ในขณะที่คำสั่ง DML ถูกดำเนินการ เพื่ออัปเดตการอ้างอิงแบบวงกลม สามารถออกคำสั่งสองคำสั่งในธุรกรรมเดียวซึ่งจะทำให้การอ้างอิงทั้งสองเป็นไปตามเงื่อนไขเมื่อธุรกรรมได้รับการยืนยันแล้ว

การอ้างอิงแบบวนซ้ำอาจเกิดขึ้นระหว่างอินสแตนซ์ของข้อมูลประเภทที่เปลี่ยนแปลงได้ เช่นในสคริปต์ Python นี้:

mydict : dict [ str , str ] = { "this" : "that" , "these" : "those" } mydict [ "myself" ] = mydict print ( mydict )

ฟังก์ชันจะส่งออกค่าโดยที่แสดงถึงการอ้างอิงแบบวนซ้ำ ในกรณีนี้คือการอ้างอิงไปยังพจนานุกรม print(mydict){'this':'that','these':'those','myself':{...}}{...}mydict

ในสเปรดชีต

การอ้างอิงแบบวนซ้ำยังเกิดขึ้นในสเปรดชีตเมื่อเซลล์สองเซลล์ต้องการผลลัพธ์ของกันและกัน ตัวอย่างเช่น หากค่าในเซลล์ A1 จะได้มาจากการบวก 5 กับค่าในเซลล์ B1 และค่าในเซลล์ B1 จะได้มาจากการบวก 3 กับค่าในเซลล์ A1 จะไม่สามารถคำนวณค่าใดๆ ได้ (แม้ว่าข้อกำหนดจะเป็น A1:=B1+5 และ B1:=A1-5 ก็ยังคงมีการอ้างอิงแบบวนซ้ำอยู่ดี ยิ่งไปกว่านั้น หาก A1=3 และ B1=-2 ก็สามารถใช้ได้กับทั้งสองสูตร ก็ยิ่งทำให้ปัญหาซับซ้อนขึ้นไปอีก เพราะยังมีค่าอื่นๆ อีกมากมายนับไม่ถ้วนของ A1 และ B1 ที่สามารถใช้ได้กับทั้งสองกรณี)

การอ้างอิงแบบวงกลมในเวิร์กชีตอาจเป็นเทคนิคที่มีประโยชน์มากสำหรับการแก้สมการโดยปริยาย เช่นสมการโคลบรูค และสมการอื่นๆ อีกมากมาย ซึ่งอาจต้องใช้อัลกอริทึม Newton-Raphsonที่ยุ่งยากใน VBA หรือการใช้มาโคร[ 4 ]

ควรแยกความแตกต่างระหว่างกระบวนการที่มีการอ้างอิงแบบวนซ้ำกับกระบวนการที่ไม่สามารถคำนวณได้และกระบวนการที่เป็นการคำนวณแบบวนซ้ำที่มีผลลัพธ์สุดท้าย กระบวนการหลังนี้อาจล้มเหลวในสเปรดชีตที่ไม่ได้ออกแบบมาเพื่อรองรับ แต่ก็ยังคงถูกต้องตามหลักตรรกะ[ 3 ]

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Circular_reference&oldid=1320945518 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การอ้างอิงแบบวงกลม

การ อ้างอิงแบบวงกลม (หรือ วงจรการอ้างอิง [ 1 ] ) คือชุดของ การอ้างอิง ที่วัตถุสุดท้ายอ้างอิงถึงวัตถุแรก ส่งผลให้เกิดวงปิด

ตัวอย่างง่ายๆ

คนแปลกหน้าถามคนท้องถิ่นว่าห้องสมุดประจำเมืองอยู่ที่ไหน "อยู่ตรงหน้าไปรษณีย์เลย" คนท้องถิ่นตอบ คนแปลกหน้าพยักหน้า แล้วถามต่อว่า "แล้วไปรษณีย์อยู่ไหนล่ะ?"

ในภาษา

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

ในการเขียนโปรแกรมคอมพิวเตอร์

การอ้างอิงแบบวนซ้ำสามารถเกิดขึ้นได้ใน การเขียนโปรแกรมคอมพิวเตอร์ เมื่อโค้ดส่วนหนึ่งต้องการผลลัพธ์จากอีกส่วนหนึ่ง แต่โค้ดส่วนนั้นก็ต้องการผลลัพธ์จากส่วนแรกเช่นกัน ตัวอย่างเช่น ฟังก์ชัน posn และ plus1 ในโปรแกรม Python ต่อไปนี้ประกอบกันเป็นการอ้างอิงแบบวนซ้ำ: