เหตุผลในการเรียนรู้ตรรกะเชิงประพจน์


14

ฉันสามารถเข้าใจถึงความสำคัญที่นักวิทยาศาสตร์คอมพิวเตอร์หรือวิศวกรที่เกี่ยวข้องกับการพัฒนาซอฟต์แวร์ควรเข้าใจการศึกษาของ logics พื้นฐานเป็นพื้นฐาน

แต่มีงาน / งานใดบ้างที่ต้องการความรู้เกี่ยวกับสิ่งเหล่านี้อย่างชัดเจนนอกเหนือจากงานที่ต้องใช้การนำเสนอความรู้ชนิดใดKnowledge Base? ฉันต้องการฟังประเภทของงานมากกว่าที่จะตอบสนองความคิด

เหตุผลที่ฉันถามสิ่งนี้มาจากความอยากรู้อยากเห็นของฉัน ในขณะที่นักเรียน CS ต้องใช้เวลาระยะหนึ่งในวิชานี้บางหลักสูตรที่เน้นการใช้ประโยชน์ได้จริง (เช่นAI-Class ) ข้ามหัวข้อนี้โดยสิ้นเชิง และฉันก็สงสัยว่าตัวอย่างเช่นการรู้predicate logicอาจช่วยวาดภาพER diagramแต่อาจไม่เป็นข้อกำหนด


ปรับปรุง 5/27/2012) ขอบคุณสำหรับคำตอบ ตอนนี้ฉันคิดว่าฉันเข้าใจและเห็นด้วยกับความสำคัญของlogicใน CS ด้วยการใช้งานที่มากมาย ฉันเพิ่งเลือกคำตอบที่ดีที่สุดอย่างแท้จริงจากความประทับใจที่ฉันได้รับจากโซลูชันWindows'ปัญหาหน้าจอสีน้ำเงิน


4
ขณะที่ฉันเขียนคำตอบของฉันฉันพบว่าขอบเขตคำถามของคุณไม่ชัดเจน คุณ จำกัด ตัวเองกับ CS หรืออุตสาหกรรมหรือทั้งสองอย่างหรืออาจยกโดยทั่วไปหรือไม่
Dave Clarke

@ Dave Clarke ใช่ฉันพบว่าไม่ชัดเจนเพียงพอ สิ่งแรกที่ฉันต้องการรู้คืออุตสาหกรรมใดจำเป็นต้องใช้ความรู้ในตรรกะเฉพาะ (แม้ว่าฉันจะขอบคุณคำตอบของคุณเพียงเพื่อโน้มน้าวตัวเองว่าวิศวกรที่เกี่ยวข้องกับซอฟต์แวร์ไม่ควรข้ามเรื่องนี้)
IsaacS

มันจะดีถ้าคุณสามารถเปลี่ยนคำถามของคุณเพื่อจับสิ่งที่คุณกำลังมองหา
Dave Clarke

เราจะเขียนifเงื่อนไขโดยไม่ใช้ตรรกะเชิงประพจน์อย่างไร?
edA-qa mort-ora-y

คำตอบ:


22

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

ในฐานะที่เป็นคำตอบที่ใช้งานได้จริงให้จำปัญหาจุดลอยตัวของ Intelและคุณจะไม่เห็นพวกเขาอีกต่อไปอย่างไร ต้องขอบคุณการใช้ทฤษฏีบทพิสูจน์พวกเขาเป็นเรื่องของอดีต จำหน้าจอสีฟ้าไมโครซอฟท์ของการเสียชีวิต ต้องขอบคุณนักแก้ปัญหา SAT, การตรวจสอบรูปแบบและวิธีการแก้ปัญหาเชิงตรรกะอื่น ๆ พวกมันเป็นสัตว์ใกล้สูญพันธุ์


3
สัตว์ใกล้สูญพันธุ์ [การอ้างอิง nee— การแบ่งกลุ่มผิด แกนทิ้ง
JeffE

@JeffE หากคุณกำลังมองหาการอ้างอิงฉันแทนที่จะแสดงหลักฐานที่แท้จริง ครั้งสุดท้ายที่คุณเห็นครั้งสุดท้ายคือเมื่อใด :)
Guy Coder

3
ฉันไม่เคยเห็นใคร ฉันใช้ Mac
JeffE

1
@JeffE Mac's เป็นระบบที่เชื่อมต่อกันอย่างใกล้ชิดซึ่งทุกอย่างจากสถาปัตยกรรมเครื่องไปจนถึงโปรแกรมแอปพลิเคชันจะถูกตัดสินใจโดยทีม / องค์กรเดียว ระบบ Windows เปิดอยู่ซึ่งผู้ผลิตและทีมงานหลายรายนำเสนอโซลูชันที่เชื่อมต่อกันโดยอาศัยมาตรฐานและส่วนต่อประสานที่ระบุไว้เท่านั้น (มักจะหลวมและคลุมเครือ) พวกเขามีความท้าทายต่อวิทยาศาสตร์คอมพิวเตอร์เป็นอย่างมาก ทีมงานของ Microsoft ที่พัฒนาทฤษฎีการพิสูจน์ / เทคนิคการวิเคราะห์แบบคงที่เพื่อทำสิ่งนี้อย่างปลอดภัยได้ทำให้ความก้าวหน้าขั้นพื้นฐานในสาขาของเรา
Uday Reddy

1
@UURRRED: ฉันไม่สงสัยเลยว่านักวิจัยของ Microsoft มีความคืบหน้าขั้นพื้นฐานหรือ BSOD นั้นพบได้น้อยกว่าที่เคยเป็นมา แต่ "สัตว์ใกล้สูญพันธุ์" ไม่ได้รับการสนับสนุนอติพจน์ รหัสที่ผิดพลาดไม่ได้เป็นเพียงแหล่งที่มาของการล่ม
JeffE

22

มีการเชื่อมต่อที่ลึกและแพร่หลายอย่างมากระหว่างตรรกะและวิทยาศาสตร์คอมพิวเตอร์ ในการทำความเข้าใจสิ่งที่พวกเขาอาจจะจำไว้ว่าวิทยาศาสตร์คอมพิวเตอร์เรียกว่า "เทคโนโลยีสารสนเทศ" หรือ "สารสนเทศ" ซึ่งหมายความว่าระบบคอมพิวเตอร์จับกระบวนการและส่งข้อมูล ตรรกะก็เหมือนกัน มันศึกษาว่าข้อมูลถูกจับในประโยคและเป็นไปได้อย่างไรที่ข้อความหนึ่งจะเป็นผลสืบเนื่องจากอีกข้อความหนึ่งคือเนื้อหาของข้อมูลนั้นมีอยู่แล้วในแถลงการณ์อื่น (หรือการรวบรวมข้อความ) ในแง่นั้นตรรกะและวิทยาศาสตร์คอมพิวเตอร์ก็เหมือนกันวินัยเน้นในด้านต่าง ๆ Logicians (Church, Kleene, Turing, Post และนักเรียนและเพื่อนร่วมงาน) สร้างวินัยของวิทยาการคอมพิวเตอร์และ Logists จำนวนมากยังคงให้ความช่วยเหลือด้านวิทยาการคอมพิวเตอร์โดยเฉพาะ Jean-Yves Girard และนักเรียนของเขา

นี่คือแอปพลิเคชันมาตรฐานของตรรกะในวิทยาการคอมพิวเตอร์:

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

  • ลอจิกเชิงตรรกะและลูกพี่ลูกน้องทางคณิตศาสตร์ทฤษฎีเซตถูกใช้ในภาษาคอมพิวเตอร์ที่หลากหลายเช่นภาษา SQL สำหรับการสืบค้นฐานข้อมูลเชิงสัมพันธ์ นอกจากนี้ยังมีภาษาโปรแกรมขึ้นอยู่กับตรรกะเรียกว่า "ภาษาโปรแกรมตรรกะ"

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

  • ความน่าจะเป็นตรรกะที่งบไม่ได้มีเพียงแค่ความจริง / ค่าเท็จ แต่ระดับของความเชื่อมั่น / ความไม่แน่นอนเพิ่มมากขึ้นเป็นรากฐานสำหรับเครื่องการเรียนรู้ระบบ

  • หากคุณต้องการระบุอย่างเป็นทางการว่าโปรแกรมทำอะไรเช่นให้ข้อกำหนดของโปรแกรมคุณจะต้องใช้ภาษาตรรกะบางรูปแบบ ที่จริงแล้วมีภาษาสเปคโปรแกรมมากมายเช่น Z และ B ซึ่งตั้งอยู่บนพื้นฐานของเหตุผลและทฤษฎีเซต นอกจากนี้ยังมีภาษาสเปคตามตรรกะของสมการเช่น Larch นักวิทยาศาสตร์คอมพิวเตอร์มักคิดค้น logics ใหม่เพื่อแสดงถึงความต้องการของวิทยาการคอมพิวเตอร์เช่น Hoare Logic และ Separation Logic หรือพวกมันจะพัฒนาและพัฒนา logics ดั้งเดิมในรูปแบบต่าง ๆ เช่นตรรกะชั่วคราวและตรรกะโมดัลและพัฒนาต่อไป

  • หากคุณต้องการตรวจสอบว่าโปรแกรมทำในสิ่งที่ควรทำหรือไม่คุณจะต้องใช้ภาษาของตรรกะไม่เพียง แต่ใช้กลไกของตรรกะทั้งหมด: ทฤษฎีพิสูจน์, ทฤษฎีแบบจำลองและขั้นตอนการตัดสินใจ เทคโนโลยีการตรวจสอบในปัจจุบันมีการเติบโตอย่างก้าวกระโดดและฉันคาดหวังว่าในอีกสิบปีข้างหน้าพวกเขาจะถูกนำไปใช้เป็นประจำสำหรับการพัฒนาซอฟต์แวร์เกือบทั้งหมด

ในความเป็นจริงการเชื่อมต่อระหว่างลอจิกและวิทยาศาสตร์คอมพิวเตอร์นั้นล้ำลึกและแพร่หลายซึ่งฉันจะบอกว่ามันเป็นเรื่องยากที่จะเป็นนักวิทยาศาสตร์คอมพิวเตอร์ที่ดี

เหตุผลที่นักวิทยาศาสตร์ AI บางคนประเมินค่าตรรกะในเวลานี้ก็คือผู้พัฒนารุ่นแรกของ AI บางรายได้เสนอเหตุผลเชิงตรรกะเป็นเครื่องมือมากกว่ารากฐาน AI โดยธรรมชาติแล้วมันสัญญาว่าจะส่งเวทมนตร์ เราไม่จำเป็นต้องทำงานหนักของระบบการเขียนโปรแกรมเพื่อให้ได้ผลลัพธ์ พวกเขาจะสามารถคิดหาวิธีการแก้ปัญหาด้วยตัวเองเพราะพวกเขาจะ "ฉลาด" ลอจิกดูเหมือนจะชี้ทางเพราะถ้าระบบคอมพิวเตอร์เข้าใจตรรกะและรู้วิธีการประมวลผลข้อมูลโดยใช้กฎของตรรกะพวกเขาจะสามารถส่งเวทมนตร์ ความเชื่อในตรรกะแบบนั้นคือเมื่อมองย้อนกลับไปผิดที่ ในตอนแรกตรรกะการปิดชั้นวางนั้นแรงเกินไปและอ่อนแอเกินไปในเวลาเดียวกัน มันแข็งแกร่งเกินไปในแง่ที่ว่ากฎของตรรกะนั้นกว้างเกินไปที่จะคิดขั้นตอนที่มีประสิทธิภาพ มันอ่อนแอเกินไปเช่นกันเพราะมันเป็นตรรกะที่คิดค้นโดยนักคณิตศาสตร์สำหรับความต้องการของคณิตศาสตร์และมันไม่ได้ ' ไม่มีคำศัพท์ที่จำเป็นในการจัดการกับข้อมูลประเภทอื่น ๆ ในโลกแห่งความเป็นจริงที่ระบบ AI ต้องจัดการ (เช่นความไม่แน่นอนข้อมูลเชิงบริบทเช่นเวลาการเปลี่ยนแปลงความรู้เอเจนซี่และอื่น ๆ ) ดังนั้น AI กำลังอยู่ระหว่างการตอบโต้เชิงตรรกะ แต่ฉันคิดว่าเมื่อพวกเขาได้รับฟันเฟืองนั้นนักวิทยาศาสตร์ AI จะตระหนักว่าวิธีการใหม่ทั้งหมดนั้นยังคงอยู่บนพื้นฐานของตรรกะตีความอย่างกว้าง


เพิ่มฐานข้อมูลเชิงสัมพันธ์!
reinierpost

คำตอบที่ดีมากและสมบูรณ์พูดถึง Jean-Yves Girard คุณคิดว่าลอจิกความน่าจะเป็นเป็นสาขาการวิจัยเช่นเดียวกับตรรกะคลุมเครือ? ในวรรณคดีเราพบคำทั้งสองและฉันต้องการทราบว่าพวกเขาแสดงโดเมนการวิจัยเดียวกัน
zurgl

@zurgl ความเข้าใจของฉันคือว่าไม่มีพิธีการเดียวที่เรียกว่า "ตรรกะความน่าจะเป็น" ตรรกะฟัซซี่นั้นเป็นพิธีการเช่นนี้ แต่ก็มีอย่างอื่นเช่นกัน รูปแบบของการใช้เหตุผลความน่าจะเป็นที่ประสบความสำเร็จมากที่สุดในด้านปัญญาประดิษฐ์ในปัจจุบันคือการอนุมานแบบเบย์ อย่างไรก็ตามรากฐานเชิงตรรกะของมันยังไม่วางอย่างแน่นหนา
Uday Reddy

17

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

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


คุณไม่มีอัลกอริทึม
Yuval Filmus

4
ที่รวมอยู่ใน 'และอื่น ๆ '
Dave Clarke

9

หนึ่งในภารกิจที่ต้องทำซ้ำผู้ปฏิบัติงานและนักทฤษฎีของ CS กำลังได้รับความมั่นใจในความถูกต้องของรหัส

มีสองวิธีหลัก:

  1. หลักฐาน: ประดิษฐ์หลักฐานเชิงตรรกะที่ส่วนหนึ่งของระบบมีคุณสมบัติบางอย่างซึ่งอาจได้รับความช่วยเหลือจากปัจจัยพื้นฐานการออกแบบตามสัญญาการตรวจสอบรหัส
  2. การทดสอบ: ทดสอบว่าคุณสมบัติบางอย่างมีไว้สำหรับอินพุตที่หลากหลายจากนั้นชักจูงให้คุณสมบัตินั้นมีไว้สำหรับอินพุตอื่น

ครั้งแรกตามวิธีตรรกะมักจะเป็นตัวเลือกเฉพาะเมื่อ

  1. ไม่มีอินพุตทั่วไป ตัวอย่างเช่นเมื่อทดสอบคุณสมบัติความปลอดภัยเป็นอินพุตผิดปรกติที่คุณต้องกังวลดังนั้นถ้าคุณไม่สามารถให้เหตุผลเชิงเหตุผลว่ามีอินพุตใดผิดปกติคุณไม่น่าจะได้รับความคุ้มครองที่ดี
  2. พื้นที่การกำหนดค่ามีขนาดใหญ่มากดังนั้นคุณต้องแยกส่วนออกเป็นส่วน ๆ โดยให้เหตุผลว่าส่วนใดสามารถส่งผลกระทบต่อส่วนอื่น ๆ ก่อนทดสอบในพื้นที่
  3. คุณมีเพียงเอกสารอธิบายพฤติกรรมของกรณีขอบของระบบที่อยู่นอกการควบคุมของคุณ คุณอาจจำลองได้ แต่ไม่สามารถทดสอบสิ่งที่เกิดขึ้นเมื่อการพึ่งพาภายนอกล้มเหลวเนื่องจากคุณไม่สามารถทำให้ล้มเหลวเนื่องจากเหตุผลทางกฎหมายหรือทางจริยธรรม

การทดสอบเชิงประจักษ์ในกรณีที่ไม่มีการพิสูจน์นั้นเป็นสิ่งทดแทนการพิสูจน์ เมื่อคุณออกแบบระบบเพื่อให้สามารถทดสอบได้คุณกำลังสร้างภาพร่างหลักฐานที่คุณกรอกส่วนของการพิสูจน์ด้วย "ทดสอบ X, Y และ Z ที่นี่" ความสามารถในการให้เหตุผลเชิงเหตุผลเป็นสิ่งจำเป็นเพื่อให้สามารถสร้างระบบที่ทดสอบได้ หากระบบไม่สามารถทดสอบหรือพิสูจน์ได้ผู้ออกแบบ / สถาปนิกจะไม่มีธุรกิจที่บอกว่าเหมาะสมสำหรับการใช้งานตามวัตถุประสงค์


6

สองสิ่งที่สำคัญที่สุดที่ตรรกะมีบทบาทสำคัญคือ:

  1. ข้อมูลทางภาษาอย่างเป็นทางการและการตรวจสอบ
  2. คงพารามิเตอร์เรียนเวไนย

Z

ในระยะสั้น: 1. คำจำกัดความของภาษาต้องการตรรกะ 2: ความยุติธรรมของโพรซีเดอร์นั้นจำเป็นต้องใช้ตรรกะ 3. ขั้นตอนการยืนยันต้องใช้ตรรกะ

ฉันควรจะพูดถึงว่าสิ่งนี้แตกต่างจากการออกแบบคอมไพเลอร์หรือ ... นี่คือคำจำกัดความของ "ทางการ" ของภาษาเหตุผลหลักที่ทำเช่นนี้คือการพิสูจน์ความถูกต้องของภาษาหรือแบบจำลอง สิ่งนี้สามารถใช้ในการตรวจสอบรูปแบบของซอฟต์แวร์ค้นหาข้อผิดพลาดก่อนที่จะดำเนินการค้นหาการหยุดชะงักอีกครั้งก่อนนำไปใช้, .... , สำหรับซอฟต์แวร์ที่จำลองสิ่งนี้คุณสามารถดูNModelได้

ตอนนี้ทำไมในปัญหาที่แก้ไขได้พารามิเตอร์ที่คุณต้องทำงานกับลอจิกคุณสามารถแบ่งคลาสของการจัดการพารามิเตอร์คงที่ที่มีระดับตรรกะแตกต่างกันพวกเขาสามารถแปลงให้กัน: ตรรกะกับออโตมาตะออโตมาโตกราฟและบทกวี คุณต้องเป็นผู้เชี่ยวชาญในตรรกะคุณสามารถแบ่งและตัดสินใจเกี่ยวกับพวกเขาเพียงแค่ทฤษฎีบทที่สำคัญที่สุด (หลังจากโรเบิร์ตและซีมัวร์ทฤษฎีบท) ในเขตข้อมูลนี้เป็นทฤษฎีบท Courcelle ของ สำหรับข้อมูลเพิ่มเติมโปรดอ่านการสำรวจทฤษฎีบท Meta Algorithmic


ในขณะที่ logics สามารถใช้เพื่อกำหนดภาษา แต่นั่นก็เป็น "บทบาทสำคัญ" ในประสบการณ์ของฉัน ฉันไม่เห็นว่า logics เกี่ยวข้องกับ FPT อย่างไร
กราฟิลส์

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