คำอธิบายแบบเลย์สำหรับการค้นหาแบบสากลคืออะไร


13

ฉันกำลังอ่านหนังสือในหัวข้อวิทยาศาสตร์คอมพิวเตอร์ แต่ขาดพื้นฐานที่จำเป็นบางประการ โดยปกติเมื่อฉันพบเจอคำศัพท์ที่ฉันไม่เข้าใจฉันแค่ค้นหามัน แต่สำหรับUniversal Searchฉันก็ไม่สามารถหาคำอธิบายที่เหมาะสมสำหรับผู้อ่านที่ไม่มีพื้นฐานด้านสถิติ / วิทยาศาสตร์คอมพิวเตอร์

ฉันได้อ่านบทความนี้เกี่ยวกับการค้นหาทั่วไปจาก Scholarpediaซึ่งดูเหมือนจะครอบคลุมหัวข้อ ฉันขอขอบคุณคำอธิบายความหมายของการค้นหาทั่วไป (หรือการค้นหาเลวิน )

คำตอบ:


15

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

ตอนนี้ใช้ภาษาการเขียนโปรแกรมที่คุณชื่นชอบ (พูด Python) และสร้างโปรแกรม Python ทุกโปรแกรมที่ประกอบด้วยอักขระไม่เกิน 10 ตัว! จากนั้นคุณเรียกใช้โปรแกรมทั้งหมดที่มีการป้อนข้อมูลของคุณเป็นเวลา 10 วินาทีในแต่ละแต่ละอินพุตxถ้าไม่มีพวกเขาให้คำตอบคุณไปตลอดทางถึง 11 เรียกใช้โปรแกรมที่มากที่สุด 11 ตัว (รวมถึงคนที่คุณพยายามแล้วแน่นอน) เป็นเวลา 11 วินาทีในแต่ละแต่ละอินพุตxหากไม่มีคำตอบที่ถูกต้องให้คุณตอบข้อ 12 ต่อไปxx

อย่างเป็นทางการมากขึ้นในการทำซ้ำคุณเรียกใช้โปรแกรมทั้งหมดที่มีความยาวไม่เกิน ( ส่วนใหญ่จะเป็นจำนวนเต็ม แต่แน่นอนว่าเป็นเลขชี้กำลังเลขชี้กำลังใน ) แต่ละโปรแกรมเป็นเวลาวินาที (หรือขั้นตอน)iiii

มีโปรแกรมคือบอกว่าที่ให้ผลลัพธ์ที่ถูกต้องในกี่วินาที เมื่อคุณเข้าสู่การวนซ้ำโปรแกรมนี้จะทำงานเป็นเวลาอย่างน้อยวินาทีและคุณจะส่งออกทั้งและการแก้ปัญหาPsi=max{|P|,s}sP


3

เพียงเพื่อเพิ่มสิ่งที่Pål GD กล่าวว่าจำไว้ว่าคุณกำลังใช้งานทุกโปรแกรมของความยาวหรือน้อยกว่าและปล่อยให้พวกเขาทำงานอย่างมากที่สุดวินาที ดังนั้นอาจเป็นไปได้ว่ามีโปรแกรมที่ได้คำตอบที่ถูกต้องซึ่งมีความยาว 100 อักขระ แต่ใช้เวลา 120 วินาทีในการรัน เรียกว่าโปรแกรมPในคุณจะตรวจสอบโปรแกรมนี้ แต่ใช้เวลานานเกินไปที่จะเรียกใช้ดังนั้นคุณจึงละทิ้งมัน หลังจากการตรวจสอบโปรแกรมทั้งหมดของความยาว 100 คุณพบว่าไม่มีของพวกเขาให้คำตอบที่ถูกต้องเพื่อให้คุณลองโปรแกรมที่มีความยาวและโปรแกรมทั้งหมดที่คุณพยายามก่อน ดังนั้นคุณลองiiPi=100101 Pโปรแกรมที่ (เรารู้) จะให้คำตอบที่ถูกต้อง แต่ก็ยังใช้เวลานานเกินไปดังนั้นคุณจึงละทิ้งมัน เราเก็บกระบวนการที่ขึ้นจนกว่าเราจะได้รับการiจากนั้นเราลองโปรแกรมทั้งหมดที่มีความยาวและเมื่อเราไปถึงเราปล่อยให้มันรันนานพอที่จะให้คำตอบที่ถูกต้อง จากนั้นเราก็หยุด - เราพบอัลกอริทึมที่เราต้องการ การวนซ้ำที่เราใช้คือเนื่องจากถึงแม้ว่าความยาวของโปรแกรมจะน้อยกว่า (เราจะเขียน ) เราต้องรอจนกว่าระยะเวลาที่ใช้คือ 120 วินาที ( ) ดังนั้นหมายถึงความยาวสูงสุดของโปรแกรมi=120120Pi=120P|P|=100s=120i=max{|P|,s}Pและระยะเวลาที่ใช้ในการทำงานของs

อีกวิธีในการดูโปรแกรมที่ใช้เวลากี่วินาทีในการสร้างคำตอบที่ถูกต้องเราต้องตรวจสอบอย่างน้อยทำซ้ำและอย่างน้อยซ้ำก่อนที่เราจะพบมันเพราะถ้าถ้าอย่างนั้นเรายังไม่ได้ตรวจสอบโปรแกรมนั้นและถ้าแล้วเราก็ไม่ได้ให้โปรแกรมรันนานพอPs |P| si<|P|i<s

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

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