10 อัลกอริทึมปัญหายังคงแก้ปัญหา

10 อัลกอริทึมปัญหายังคงแก้ปัญหา

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

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

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

การจัดการกับการค้นหาด้วยข้อความ

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

คำที่แตกต่าง

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

enlist และ ฟัง สำคัญกว่าคอมพิวเตอร์จะต้องใช้เวลาในการแยกแยะความแตกต่างระหว่างกัน ปัญหาการแยกคำพยายามหาขั้นตอนวิธีที่เล็กที่สุด (และเร็วที่สุด) ที่เป็นไปได้ (หุ่นยนต์ จำกัด deterministic, DFN ในกรณีนี้) เพื่อแยกคำเป้าหมายคือการยอมรับคำหนึ่งคำและปฏิเสธข้อความอื่นโดยให้คำสองคำมีความยาวโดยเฉพาะ การกำหนดว่าแอพพลิเคชันจะสิ้นสุดลง

ปัญหาหนึ่งที่อลันทัวริงเสนอในปีพ. ศ. 2479 เป็นประเด็นที่ว่าอัลกอริทึมได้รับคำอธิบายของโปรแกรมและอินพุทสามารถระบุได้ว่าโปรแกรมจะหยุดชะงักหรือไม่

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

การสร้างและการใช้งานทางเดียว

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

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

การคูณหมายเลขที่มีขนาดใหญ่จริงๆ

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

อัลกอริทึมการคูณที่ซับซ้อนของ Gauss

  • การคูณ Karatsuba
  • Toom-Cook
  • วิธีการแปลงฟูเรียร์
  • แม้ว่าหลายวิธีที่มีอยู่ในปัจจุบันจะทำให้ได้ผลลัพธ์ที่ยอมรับได้ เมื่อคุณมีการคำนวณจำนวนมากเพื่อดำเนินการปัญหาเวลาจะกลายเป็นเรื่องสำคัญ ดังนั้นการคูณจำนวนมากเป็นหนึ่งในปัญหาเหล่านั้นที่ต้องการโซลูชันที่ดีกว่าที่มีอยู่ในปัจจุบัน

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

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

การแก้ไข

ระยะห่าง

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

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

คำถามนี้ถูกกล่าวถึงในทศวรรษ 1950 โดย John Nash ในจดหมายถึง National Security Agency (NSA) และอีกครั้งในจดหมายระหว่าง Kurt Gödelกับ John von Neumann นอกเหนือจากการเรียนรู้ด้วยเครื่อง (และ AI โดยทั่วไปแล้ว) ปัญหานี้เป็นเรื่องที่ต้องกังวลกับสาขาอื่น ๆ ซึ่งรวมถึงคณิตศาสตร์การเข้ารหัสการวิจัยอัลกอริทึมทฤษฎีเกมการประมวลผลมัลติมีเดียปรัชญาและเศรษฐศาสตร์

การเล่นเกมปริยาย

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

การทำความเข้าใจเกี่ยวกับปัญหาในเชิงพื้นที่

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

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

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