34 คะแนน โดย GN⁺ 2024-03-17 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • รายวิชา CS251 ของ CMU ว่าด้วยการศึกษาการคำนวณอย่างเข้มข้น ซึ่งเป็นองค์ประกอบพื้นฐานของจักรวาล สังคม เทคโนโลยีใหม่ ๆ และจิตใจของเราที่ใช้ทำความเข้าใจสิ่งเหล่านี้
  • การมีภาษาและเครื่องมือที่เหมาะสมสำหรับศึกษาการคำนวณเป็นสิ่งสำคัญ
  • ในรายวิชานี้จะสำรวจผลลัพธ์และคำถามสำคัญเกี่ยวกับธรรมชาติของการคำนวณ

การทำให้การคำนวณเป็นรูปแบบเชิงแบบแผน

โมดูล 1: บทนำ

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

โมดูล 2: ออโตมาตาจำกัด

  • เป้าหมายคือการแนะนำ deterministic finite automata (DFA) ซึ่งเป็นแบบจำลองการคำนวณที่เรียบง่ายและมีข้อจำกัด
  • DFA น่าสนใจในตัวเองและมีการประยุกต์ใช้ที่เป็นประโยชน์ แต่ยังถูกใช้เป็นก้าวแรกในการนิยามแนวคิดของอัลกอริทึมอย่างเป็นทางการ

โมดูล 3: การทำให้การคำนวณเป็นรูปแบบเชิงแบบแผน

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

โมดูล 4: ขีดจำกัดของการคำนวณ

  • พิสูจน์ว่าปัญหาส่วนใหญ่นั้นตัดสินได้ไม่ได้ และยกตัวอย่างที่เป็นรูปธรรมของปัญหาที่ตัดสินไม่ได้
  • ใช้เทคนิคสำคัญสองอย่างคือ diagonalization และ reduction

โมดูล 5: ขีดจำกัดของการให้เหตุผลของมนุษย์

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

ความซับซ้อนของการคำนวณ

โมดูล 6: ความซับซ้อนเชิงเวลา

  • ปัญหาจำนวนมากอาจตัดสินได้ในทางทฤษฎี แต่หากอัลกอริทึมที่มีประสิทธิภาพที่สุดยังต้องใช้ขั้นตอนการคำนวณจำนวนมหาศาล ปัญหานั้นก็แทบจะตัดสินไม่ได้ในทางปฏิบัติ
  • มีการศึกษาความซับซ้อนของการคำนวณในแง่ทรัพยากรหลายประเภท รวมถึงความซับซ้อนเชิงเวลา แต่จะเน้นที่ความซับซ้อนเชิงเวลาเป็นหลัก

โมดูล 7: ทฤษฎีกราฟ

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

โมดูล 8: P เทียบกับ NP

  • แนะนำคลาสความซับซ้อน NP และอภิปรายปัญหา P เทียบกับ NP ซึ่งเป็นปัญหาที่ยังไม่คลี่คลายที่สำคัญที่สุดในวิทยาการคอมพิวเตอร์
  • หากสามารถตัดสินภาษาเชิงธรรมชาติและมีการศึกษามาอย่างดีจำนวนมากที่อยู่ใน NP ได้ภายในเวลาแบบพหุนาม ก็จะนำไปสู่การประยุกต์ใช้ที่น่าทึ่ง

โมดูล 9: อัลกอริทึมเชิงสุ่ม

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

โมดูล 10: วิทยาการเข้ารหัสลับ

  • การปฏิวัติด้านวิทยาการคอมพิวเตอร์ทำให้สาขาวิทยาการเข้ารหัสลับเริ่มเติบโตอย่างมาก
  • การศึกษาความซับซ้อนของการคำนวณได้ปฏิวัติวิทยาการเข้ารหัสลับอย่างสิ้นเชิง

ไฮไลต์ของวิทยาการคอมพิวเตอร์เชิงทฤษฎี

โมดูล 11: หัวข้อเพิ่มเติม

  • นำเสนอไฮไลต์ที่คัดสรรมาจากวิทยาการคอมพิวเตอร์เชิงทฤษฎี

ความเห็นของ GN⁺

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

2 ความคิดเห็น

 
quack337 2024-03-19

อา.. จำได้เลยว่าตอนเป็นนักศึกษามหาวิทยาลัยเคยทรมานถึงขั้นอยากดึงผมตัวเองอยู่พักใหญ่..
ถึงตอนนี้ก็คงยังไม่เข้าใจอยู่ดี แต่ก็ต้องลองตั้งใจฟังดูครับ

 
GN⁺ 2024-03-17

ความคิดเห็นจาก Hacker News

  • วิชานี้แนะนำแนวคิดที่หลากหลาย และเน้นเป็นพิเศษที่การพัฒนาความสามารถในการแก้ปัญหา

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

  • เคยเห็นโพสต์บน Reddit ที่ถามวิธีแก้ปัญหาวิทยาการคอมพิวเตอร์เชิงทฤษฎีปัญหาหนึ่ง และภายหลังพบว่านั่นเป็นความพยายามจะโกงการบ้านของวิชา COMS 331 (ทฤษฎีการคำนวณ) ของ Iowa State University

    • ไม่มีใครช่วย และผู้โพสต์ก็ลบโพสต์นั้นไป
    • ปัญหาดูเหมือนน่าสนใจ จึงลองทำโดยคิดว่าเป็นความท้าทายสนุกๆ ระยะสั้น
    • แม้จะเรียนเอกคณิตศาสตร์ แต่ก็เคยเรียนวิชาระดับปริญญาตรีด้านวิทยาการคอมพิวเตอร์เชิงทฤษฎีครบทั้งหมด และแม้เวลาจะผ่านไปประมาณ 35 ปีจนลืมไปมากแล้ว ก็คิดว่าน่าจะยังจำพื้นฐานได้ เพราะโจทย์มาจากการบ้านชุดแรกของ COMS 331
    • ใช้เวลาไปหลายวันแต่ไม่คืบหน้าเลย และหลังจากนั้นก็คิดถึงโจทย์นี้หลายครั้ง ใช้เวลาครั้งละหลายชั่วโมงหรือทั้งวัน แต่ก็ยังล้มเหลวอยู่ดี
  • ถ้าอยากเรียนรู้แนวคิดเหล่านี้ด้วยการลงมือเขียนโปรแกรมเอง ขอแนะนำ "Understanding Computation From Simple Machines to Impossible Programs" ของ Tom Stuart

  • สามารถดูเวอร์ชันที่สมบูรณ์กว่าของวิชานี้ได้จากเพลย์ลิสต์บน YouTube

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

  • หากสนใจหัวข้อนี้ สามารถดูเว็บไซต์ของ Boaz Barak และตำราเรียนที่มีให้ในรูปแบบ PDF ได้

  • สองแนวคิดที่สำคัญที่สุดในวิทยาการคอมพิวเตอร์เชิงทฤษฎี:

    1. รายการแบบ Move to front อาจใช้เวลาค้นหาในลำดับรายการมากกว่าลำดับที่เหมาะสมที่สุดได้ไม่เกิน 2 เท่า แต่ก็มักดีกว่าลำดับรายการแบบคงที่อย่างมาก
    2. อัลกอริทึมแบบสุ่ม (เช่น quicksort) มักใช้เวลาเท่ากับอัลกอริทึมแบบไม่สุ่มในกรณีเลวร้ายที่สุด แต่ในทางปฏิบัติมักเร็วกว่าเวอร์ชันไม่สุ่มมาก
  • ถ้าเอาวิชานี้ไปทำเป็นเวอร์ชันของสาขาอื่นจะมีหน้าตาอย่างไร?

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

  • จะเข้าใจการคำนวณในฐานะคุณสมบัติพื้นฐานของจักรวาลได้อย่างไร? พืชและสัตว์ทำการคำนวณอย่างไร?