คุณสมบัติ หมายถึง อัลกอริธึมนำไปสู่คุณสมบัติพื้นฐานของอัลกอริธึม คำจำกัดความนี้อ้างถึงคุณสมบัติของอัลกอริทึมอย่างไร
แก้ปัญหาการค้นหาการไหลสูงสุดในเครือข่ายการขนส่ง อัลกอริทึมนี้ไม่ใช่กรณีพิเศษของอัลกอริทึมของ Ford Fulkerson ดำเนินการโดยไม่มีการปรับปรุงพิเศษ อัลกอริธึมจะทำงานทันเวลา การปรับปรุงเพิ่มเติมบางอย่าง... Wikipedia
อัลกอริธึมการค้นหาในท้องถิ่นคือกลุ่มของอัลกอริธึมที่การค้นหาดำเนินการตามสถานะปัจจุบันเท่านั้น และสถานะที่ผ่านก่อนหน้านี้จะไม่ถูกนำมาพิจารณาและไม่ถูกจดจำ วัตถุประสงค์หลักของการค้นหาไม่ใช่เพื่อค้นหาเส้นทางที่เหมาะสมที่สุดไปยัง... ... วิกิพีเดีย
คำนี้มีความหมายอื่น ดูที่ ดาวอังคาร (ความหมาย) MARS สร้าง: 1998 เผยแพร่: 1998 ขนาดคีย์ ... Wikipedia
คำนี้มีความหมายอื่น ดูที่ ดาวอังคาร (ความหมาย) ดาวอังคาร สร้างเมื่อ: 1998 ... Wikipedia
คำนี้มีความหมายอื่น โปรดดู อัลกอริทึม (ความหมาย) สมควรปรับปรุงบทความนี้หรือไม่: ทำการออกแบบใหม่ตามกฎ ... Wikipedia
บทความนี้รวมเนื้อหาจากบทความ Wikipedia ภาษาอังกฤษที่เกี่ยวข้องเวอร์ชันนี้ Operational Transformation (OT) เป็นเทคโนโลยีที่รองรับฟังก์ชันการทำงานร่วมกันที่หลากหลายในระบบขั้นสูง... ... Wikipedia
อัลกอริธึมการค้นหากราฟ A* B* อัลกอริธึมของ Bellman Ford การค้นหาแบบสองทิศทาง อัลกอริธึมของ Dijkstra อัลกอริธึมของ Johnson's อัลกอริธึมของ Johnson's การค้นหาแบบกว้างก่อน การค้นหาเชิงลึกก่อน การค้นหาแบบจำกัดความลึก การค้นหาที่ตรงที่สุดอันดับแรก อัลกอริธึมของ Floyd Warshall ค้นหา... ... Wikipedia
นี่คืออัลกอริทึมสำหรับการจัดลำดับองค์ประกอบในรายการ เมื่อรายการมีหลายฟิลด์ ฟิลด์ที่ทำหน้าที่เป็นเกณฑ์การสั่งซื้อจะเรียกว่าคีย์การเรียงลำดับ ในทางปฏิบัติ ตัวเลขมักถูกใช้เป็นกุญแจ และในสาขาอื่นๆ... ... Wikipedia
BMW (อังกฤษ BMW Blue Midnight Wish) เป็นฟังก์ชันแฮชสำหรับการเข้ารหัส (hf) ที่มีเอาต์พุตเป็น n บิต โดยที่ n=224,256, 384 หรือ 512 ฟังก์ชันแฮชได้รับการออกแบบเพื่อสร้าง "ลายนิ้วมือ" หรือ "สรุป" ของข้อความตามอำเภอใจ ความยาวบิต.... ... Wikipedia
บทความนี้ควรเป็นวิกิพีเดีย โปรดจัดรูปแบบตามกฎการจัดรูปแบบบทความ คำนี้มีความหมายอื่นดู TEA (ความหมาย) ... Wikipedia
หนังสือ
- ตรรกะและจำนวนเฉพาะของ Lukasiewicz, A. S. Karpenko, เป็นครั้งแรกในวรรณคดีโลกที่การศึกษาเชิงเดี่ยวสร้างการเชื่อมโยงโดยตรงระหว่างตรรกะและจำนวนเฉพาะ แม้ว่าตรรกะอันทรงคุณค่าของ Lukasiewicz จะเป็นผลมาจากการโต้แย้ง... หมวดหมู่:ลอจิก สำนักพิมพ์: Librocom,
- ตรรกะในคำถามและคำตอบ หนังสือเรียน Kobzar Vladimir Ivanovich หนังสือเรียนนี้เขียนขึ้นตามโปรแกรมของหลักสูตรตรรกะทางการแบบดั้งเดิม (ทั่วไป ปรัชญา) โดยจะตรวจสอบรูปแบบพื้นฐานและวิธีการของกิจกรรมทางจิต...
เกือบทุกอย่างในโลกของเราอยู่ภายใต้กฎหมายและกฎเกณฑ์บางประเภท วิทยาศาสตร์สมัยใหม่ไม่ได้หยุดนิ่งด้วยการที่มนุษยชาติรู้สูตรและอัลกอริธึมมากมาย ตามมาด้วยซึ่งเป็นไปได้ที่จะคำนวณและสร้างการกระทำและโครงสร้างมากมายที่สร้างขึ้นโดยธรรมชาติและนำแนวคิดที่มนุษย์ประดิษฐ์ขึ้นมาสู่ชีวิต
ในบทความนี้เราจะดูแนวคิดพื้นฐานของอัลกอริทึม
ประวัติความเป็นมาของอัลกอริทึม
อัลกอริทึมเป็นแนวคิดที่ปรากฏในศตวรรษที่ 12 คำว่า "อัลกอริทึม" นั้นมาจากการตีความภาษาละตินของชื่อของนักคณิตศาสตร์ชาวตะวันออกกลางชื่อดัง Muhammad al-Khwarizmi ผู้เขียนหนังสือ "On Indian Calculus" หนังสือเล่มนี้อธิบายวิธีการเขียนตัวเลขธรรมชาติโดยใช้เลขอารบิคอย่างถูกต้อง และให้คำอธิบายเกี่ยวกับอัลกอริทึมในการทำงานกับคอลัมน์เหนือตัวเลขดังกล่าว
ในศตวรรษที่ 12 หนังสือ "On Indian Accounting" ได้รับการแปลเป็นภาษาละติน และเมื่อคำจำกัดความนี้ปรากฏขึ้น
ปฏิสัมพันธ์ของอัลกอริทึมกับมนุษย์และเครื่องจักร
การสร้างอัลกอริธึมต้องใช้ความคิดสร้างสรรค์ ดังนั้นมีเพียงสิ่งมีชีวิตเท่านั้นที่สามารถสร้างรายการใหม่ของการดำเนินการตามลำดับได้ แต่ในการทำตามคำแนะนำที่มีอยู่แล้ว คุณไม่จำเป็นต้องมีจินตนาการ แม้แต่เทคโนโลยีที่ไร้วิญญาณก็สามารถจัดการสิ่งนี้ได้
ตัวอย่างที่ดีของคำแนะนำต่อไปนี้คือเตาอบไมโครเวฟเปล่าที่ยังคงทำงานต่อไปแม้จะไม่มีอาหารอยู่ข้างในก็ตาม
หัวเรื่องหรือวัตถุที่ไม่จำเป็นต้องเข้าใจสาระสำคัญของอัลกอริทึมเรียกว่าผู้ดำเนินการอย่างเป็นทางการ บุคคลสามารถเป็นผู้ดำเนินการอย่างเป็นทางการได้ แต่หากการกระทำใดการกระทำหนึ่งไม่เกิดประโยชน์ ผู้ดำเนินการทางความคิดสามารถทำทุกอย่างในแบบของเขาเอง ดังนั้นผู้แสดงหลักได้แก่ คอมพิวเตอร์ เตาไมโครเวฟ โทรศัพท์ และอุปกรณ์อื่นๆ แนวคิดเรื่องอัลกอริทึมในวิทยาการคอมพิวเตอร์มีความสำคัญที่สุด แต่ละอัลกอริธึมจะถูกรวบรวมโดยคำนึงถึงหัวข้อเฉพาะ โดยคำนึงถึงการดำเนินการที่ยอมรับได้ ออบเจ็กต์เหล่านั้นที่ผู้ถูกทดสอบสามารถใช้คำสั่งได้จะถือเป็นสภาพแวดล้อมของผู้ดำเนินการ
เกือบทุกอย่างในโลกของเราอยู่ภายใต้กฎหมายและกฎเกณฑ์บางประเภท วิทยาศาสตร์สมัยใหม่ไม่ได้หยุดนิ่งด้วยการที่มนุษยชาติรู้สูตรและอัลกอริธึมมากมาย ตามมาซึ่งเป็นไปได้ที่จะคำนวณและสร้างการกระทำและการสร้างสรรค์ทางธรรมชาติมากมายและนำแนวคิดที่มนุษย์ประดิษฐ์ขึ้นมาใช้ใหม่ ในบทความนี้เราจะดูแนวคิดพื้นฐานของอัลกอริทึม
อัลกอริทึมคืออะไร?
การกระทำส่วนใหญ่ที่เราทำในช่วงชีวิตของเราจำเป็นต้องปฏิบัติตามกฎเกณฑ์หลายข้อ คุณภาพและผลลัพธ์ของการทำงานที่ได้รับมอบหมายให้สำเร็จนั้นขึ้นอยู่กับว่าบุคคลนั้นมีความคิดที่ถูกต้องเพียงใดว่าเขาควรทำสิ่งใดอย่างไรและในลำดับใด ตั้งแต่วัยเด็ก พ่อแม่พยายามพัฒนาอัลกอริธึมสำหรับการกระทำพื้นฐานของลูก เช่น ตื่น จัดเตียง แปรงฟัน ออกกำลังกาย กินข้าวเช้า ฯลฯ รายการที่บุคคลทำทั้งหมด ชีวิตในตอนเช้าก็ถือได้ว่าเป็นอัลกอริธึมชนิดหนึ่ง
วิธีการที่จะใช้นั้นขึ้นอยู่กับปัจจัยหลายประการ เช่น ความซับซ้อนของปัญหา กระบวนการแก้ไขปัญหาต้องมีรายละเอียดมากน้อยเพียงใด เป็นต้น
อัลกอริธึมเวอร์ชันกราฟิก
อัลกอริธึมกราฟิกเป็นแนวคิดที่แสดงถึงการสลายตัวของการกระทำที่ต้องดำเนินการเพื่อแก้ไขปัญหาบางอย่างให้เป็นรูปทรงเรขาคณิตบางอย่าง
พวกเขาไม่ได้แสดงออกมาโดยบังเอิญ เพื่อให้ใครก็ตามเข้าใจได้ มักใช้บล็อกไดอะแกรมและไดอะแกรมโครงสร้าง Nussi-Schneiderman
นอกจากนี้ แผนภาพบล็อกยังแสดงตาม GOST-19701-90 และ GOST-19.003-80
ตัวเลขกราฟิกที่ใช้ในอัลกอริทึมแบ่งออกเป็น:
ขั้นพื้นฐาน.รูปภาพพื้นฐานใช้เพื่อระบุการดำเนินการที่จำเป็นในการประมวลผลข้อมูลเมื่อแก้ไขปัญหา
ตัวช่วย.จำเป็นต้องมีรูปภาพเสริมเพื่อระบุองค์ประกอบในการแก้ปัญหาของแต่ละบุคคล ไม่ใช่องค์ประกอบที่สำคัญที่สุด
ในอัลกอริธึมแบบกราฟิก บล็อกที่ใช้แทนข้อมูลเรียกว่าบล็อก
บล็อกทั้งหมดเรียงตามลำดับ "จากบนลงล่าง" และ "จากซ้ายไปขวา" - นี่คือทิศทางการไหลที่ถูกต้อง ด้วยลำดับที่ถูกต้อง เส้นที่เชื่อมต่อบล็อกจะไม่แสดงทิศทาง ในกรณีอื่นๆ ทิศทางของเส้นจะแสดงโดยใช้ลูกศร
รูปแบบอัลกอริทึมที่ถูกต้องไม่ควรมีเอาต์พุตมากกว่าหนึ่งรายการจากบล็อกการประมวลผล และเอาต์พุตน้อยกว่าสองรายการจากบล็อกที่รับผิดชอบในการตรวจสอบการปฏิบัติตามเงื่อนไข
จะสร้างอัลกอริทึมอย่างถูกต้องได้อย่างไร?
โครงสร้างของอัลกอริธึมดังที่ได้กล่าวข้างต้นจะต้องสร้างขึ้นตาม GOST มิฉะนั้นจะไม่สามารถเข้าใจและเข้าถึงได้โดยผู้อื่น
วิธีการบันทึกโดยทั่วไปประกอบด้วยประเด็นต่อไปนี้:
ชื่อที่จะทำให้ชัดเจนว่าปัญหาใดที่สามารถแก้ไขได้โดยใช้โครงร่างนี้
แต่ละอัลกอริธึมจะต้องมีจุดเริ่มต้นและจุดสิ้นสุดที่กำหนดไว้อย่างชัดเจน
อัลกอริทึมจะต้องอธิบายข้อมูลทั้งหมดอย่างชัดเจนและชัดเจนทั้งอินพุตและเอาต์พุต
เมื่อรวบรวมอัลกอริทึมคุณควรสังเกตการกระทำที่จะช่วยให้คุณสามารถดำเนินการที่จำเป็นในการแก้ปัญหากับข้อมูลที่เลือก ตัวอย่างของอัลกอริทึม:
- ชื่อสคีมา
- ข้อมูล.
- เริ่ม.
- ทีม.
- จบ.
การสร้างวงจรที่ถูกต้องจะช่วยอำนวยความสะดวกในการคำนวณอัลกอริธึมอย่างมาก
รูปทรงเรขาคณิตที่รับผิดชอบการกระทำต่างๆ ในอัลกอริทึม
วงรีแนวนอนคือจุดเริ่มต้นและจุดสิ้นสุด (สัญลักษณ์ของความสมบูรณ์)
สี่เหลี่ยมแนวนอนคือการคำนวณหรือการกระทำอื่น (เครื่องหมายกระบวนการ)
สี่เหลี่ยมด้านขนานแนวนอน - อินพุตหรือเอาต์พุต (เครื่องหมายข้อมูล)
เพชรที่อยู่ในแนวนอนคือการตรวจสอบสภาพ (เครื่องหมายการแก้ปัญหา)
รูปหกเหลี่ยมที่ยาวและอยู่ในแนวนอนเป็นการดัดแปลง (สัญลักษณ์ของการเตรียมการ)
โมเดลอัลกอริธึมแสดงในรูปด้านล่าง
เวอร์ชันสูตร-วาจาของการสร้างอัลกอริทึม
อัลกอริธึมสูตรและวาจาเขียนในรูปแบบอิสระ ในภาษาวิชาชีพของสาขาที่เกี่ยวข้องกับปัญหา คำอธิบายของการกระทำในลักษณะนี้ดำเนินการโดยใช้คำและสูตร
แนวคิดของอัลกอริทึมในวิทยาการคอมพิวเตอร์
ในสาขาคอมพิวเตอร์ ทุกอย่างขึ้นอยู่กับอัลกอริธึม หากไม่มีคำแนะนำที่ชัดเจนในรูปแบบของรหัสพิเศษ เทคนิคหรือโปรแกรมเดียวจะไม่ทำงาน ในบทเรียนวิทยาการคอมพิวเตอร์ นักเรียนจะได้รับการสอนแนวคิดพื้นฐานของอัลกอริธึม วิธีใช้อัลกอริธึม และวิธีการสร้างอัลกอริธึมด้วยตนเอง
การสร้างและการใช้อัลกอริธึมในวิทยาการคอมพิวเตอร์เป็นกระบวนการที่สร้างสรรค์มากกว่าการทำตามคำแนะนำในการแก้ปัญหาทางคณิตศาสตร์
นอกจากนี้ยังมีโปรแกรมพิเศษที่เรียกว่า “Algorithm” ซึ่งช่วยให้ผู้ที่ไม่คุ้นเคยกับการเขียนโปรแกรมสามารถสร้างโปรแกรมของตนเองได้ ทรัพยากรดังกล่าวสามารถเป็นผู้ช่วยที่ขาดไม่ได้สำหรับผู้ที่กำลังก้าวแรกในสาขาวิทยาการคอมพิวเตอร์และต้องการสร้างเกมของตนเองหรือโปรแกรมอื่น ๆ
ในทางกลับกัน โปรแกรมใดๆ ก็เป็นอัลกอริธึม แต่หากอัลกอริธึมมีเพียงการกระทำที่ต้องทำโดยการใส่ข้อมูลของคุณ แสดงว่าโปรแกรมมีข้อมูลสำเร็จรูปอยู่แล้ว ข้อแตกต่างอีกประการหนึ่งคือโปรแกรมสามารถจดสิทธิบัตรได้และเป็นกรรมสิทธิ์ แต่อัลกอริทึมไม่สามารถทำได้ อัลกอริธึมเป็นแนวคิดที่กว้างกว่าโปรแกรม
บทสรุป
ในบทความนี้ เราได้ตรวจสอบแนวคิดของอัลกอริทึมและประเภทของอัลกอริทึม และเรียนรู้วิธีเขียนไดอะแกรมกราฟิกอย่างถูกต้อง
แนวคิดของอัลกอริทึม คุณสมบัติของอัลกอริทึม ประเภทของอัลกอริทึม วิธีการอธิบายอัลกอริทึม
อัลกอริธึมเป็นคำสั่งที่แม่นยำและเข้าใจได้สำหรับนักแสดงในการดำเนินการตามลำดับที่มุ่งแก้ไขปัญหาที่กำหนด คำว่า "อัลกอริทึม" มาจากชื่อของนักคณิตศาสตร์ Al Khorezmi ซึ่งเป็นผู้กำหนดกฎสำหรับการดำเนินการทางคณิตศาสตร์ ในขั้นต้น อัลกอริธึมหมายถึงกฎสำหรับการดำเนินการทางคณิตศาสตร์สี่รายการกับตัวเลขเท่านั้น ต่อมาแนวคิดนี้เริ่มใช้โดยทั่วไปเพื่อแสดงถึงลำดับของการกระทำที่นำไปสู่การแก้ปัญหาของงานที่กำหนด เมื่อพูดถึงอัลกอริธึมของกระบวนการคำนวณ จำเป็นต้องเข้าใจว่าออบเจ็กต์ที่ใช้อัลกอริธึมนั้นเป็นข้อมูล อัลกอริธึมสำหรับการแก้ปัญหาการคำนวณคือชุดกฎสำหรับการแปลงข้อมูลต้นฉบับเป็นผลลัพธ์
หลัก คุณสมบัติ อัลกอริธึมคือ:
- ระดับ (ความแน่นอน) ถือว่าได้รับผลลัพธ์ที่ชัดเจนของกระบวนการคำนวณด้วยข้อมูลเริ่มต้นที่กำหนด เนื่องจากคุณสมบัตินี้ กระบวนการดำเนินการอัลกอริธึมจึงมีลักษณะเป็นกลไก
- ประสิทธิผล. บ่งชี้ถึงการมีอยู่ของข้อมูลเริ่มต้นซึ่งกระบวนการคำนวณที่นำไปใช้ตามอัลกอริธึมที่กำหนดจะต้องหยุดลงหลังจากขั้นตอนจำนวนจำกัดและให้ผลลัพธ์ที่ต้องการ
- ตัวละครมวล คุณสมบัตินี้บอกเป็นนัยว่าอัลกอริทึมควรเหมาะสมสำหรับการแก้ปัญหาทุกประเภทตามประเภทที่กำหนด
- ความรอบคอบ หมายถึงการแบ่งกระบวนการคำนวณที่กำหนดโดยอัลกอริธึมออกเป็นขั้นตอนที่แยกจากกันซึ่งความสามารถที่นักแสดง (คอมพิวเตอร์) จะต้องดำเนินการนั้นไม่ต้องสงสัยเลย
อัลกอริธึมจะต้องได้รับการทำให้เป็นทางการตามกฎบางอย่างโดยใช้วิธีการมองเห็นเฉพาะ ซึ่งรวมถึงวิธีการเขียนอัลกอริทึมดังต่อไปนี้: วาจา, สูตร-วาจา, กราฟิก, ภาษาโครงร่างตัวดำเนินการ, ภาษาอัลกอริทึม
วิธีอัลกอริธึมการบันทึกแบบกราฟิก (บล็อกไดอะแกรม) ที่แพร่หลายที่สุดเนื่องจากมีความชัดเจน
บล็อกไดอะแกรม คือการแสดงกราฟิกของโครงสร้างลอจิคัลของอัลกอริธึม ซึ่งแต่ละขั้นตอนของกระบวนการประมวลผลข้อมูลจะแสดงในรูปแบบของสัญลักษณ์ทางเรขาคณิต (บล็อก) ซึ่งมีการกำหนดค่าบางอย่างขึ้นอยู่กับลักษณะของการดำเนินการที่ดำเนินการ รายการสัญลักษณ์ ชื่อ ฟังก์ชั่นที่แสดง รูปร่างและขนาด ถูกกำหนดโดย GOST
ด้วยอัลกอริธึมที่หลากหลายสำหรับการแก้ปัญหา กระบวนการคำนวณสามประเภทหลักสามารถแยกแยะได้:
- เชิงเส้น;
- การแตกแขนง;
- วัฏจักร
เชิงเส้น เป็นกระบวนการคำนวณที่ดำเนินการทุกขั้นตอนของการแก้ปัญหาตามลำดับธรรมชาติของการบันทึกขั้นตอนเหล่านี้
การแตกแขนง เป็นกระบวนการคำนวณที่การเลือกทิศทางในการประมวลผลข้อมูลขึ้นอยู่กับข้อมูลเริ่มต้นหรือข้อมูลกลาง (ขึ้นอยู่กับผลลัพธ์ของการตรวจสอบการปฏิบัติตามเงื่อนไขเชิงตรรกะใด ๆ )
วงจรเป็นส่วนหนึ่งของการคำนวณที่ทำซ้ำหลายครั้ง กระบวนการคำนวณที่มีหนึ่งหรือหลายรอบเรียกว่า วัฏจักร . ขึ้นอยู่กับจำนวนการดำเนินการ รอบจะถูกแบ่งออกเป็นรอบโดยมีจำนวนการทำซ้ำ (กำหนดไว้ล่วงหน้า) ที่แน่นอน และรอบที่มีจำนวนการทำซ้ำไม่จำกัด จำนวนการทำซ้ำครั้งหลังขึ้นอยู่กับความพึงพอใจของเงื่อนไขบางประการที่ระบุความจำเป็นในการดำเนินการรอบ ในกรณีนี้ สามารถตรวจสอบเงื่อนไขได้เมื่อเริ่มต้นวงจร - จากนั้นเรากำลังพูดถึงวงจรที่มีเงื่อนไขเบื้องต้น หรือในตอนท้าย - จากนั้นจะเป็นวงจรที่มีเงื่อนไขภายหลัง
คุณสมบัติของอัลกอริทึม
คำจำกัดความของอัลกอริทึมที่ให้ไว้ข้างต้นไม่สามารถถือว่าเข้มงวดได้ - ยังไม่ชัดเจนว่า "ใบสั่งยาที่แน่นอน" หรือ "ลำดับของการกระทำที่รับรองผลลัพธ์ที่ต้องการ" คืออะไร ดังนั้น คุณสมบัติทั่วไปหลายประการของอัลกอริธึมจึงมักถูกกำหนดขึ้นเพื่อแยกแยะอัลกอริธึมจากคำสั่งอื่นๆ
คุณสมบัติเหล่านี้คือ:
Discreteness (ความไม่ต่อเนื่อง, การแยกจากกัน) - อัลกอริธึมจะต้องแสดงถึงกระบวนการในการแก้ปัญหาโดยเป็นการดำเนินการตามลำดับขั้นตอนง่าย ๆ (หรือกำหนดไว้ก่อนหน้านี้) แต่ละการกระทำที่ได้รับจากอัลกอริธึมจะถูกดำเนินการหลังจากที่การกระทำก่อนหน้านี้เสร็จสิ้นแล้วเท่านั้น
ความแน่นอน - แต่ละกฎของอัลกอริทึมจะต้องมีความชัดเจน ไม่คลุมเครือ และไม่มีที่ว่างสำหรับความเด็ดขาด เนื่องจากคุณสมบัตินี้ การดำเนินการของอัลกอริทึมจึงเป็นกลไกโดยธรรมชาติ และไม่ต้องการคำแนะนำหรือข้อมูลเพิ่มเติมเกี่ยวกับปัญหาที่กำลังแก้ไข
ประสิทธิภาพ (ความจำกัด) - อัลกอริธึมจะต้องนำไปสู่การแก้ปัญหาในจำนวนขั้นตอนที่จำกัด
มาตราส่วนขนาดใหญ่ - อัลกอริธึมสำหรับการแก้ปัญหาได้รับการพัฒนาในรูปแบบทั่วไปนั่นคือควรใช้กับปัญหาบางประเภทที่แตกต่างกันในข้อมูลเริ่มต้นเท่านั้น ในกรณีนี้สามารถเลือกข้อมูลเริ่มต้นได้จากพื้นที่หนึ่งซึ่งเรียกว่าพื้นที่ใช้งานของอัลกอริทึม
กฎสำหรับการดำเนินการทางคณิตศาสตร์หรือการสร้างทางเรขาคณิตเป็นอัลกอริทึม ในขณะเดียวกันคำถามก็ยังไม่มีคำตอบ: แนวคิดของอัลกอริทึมแตกต่างจากแนวคิดเช่น "วิธีการ", "วิธีการ", "กฎ" อย่างไร คุณยังสามารถเจอข้อความที่ว่าคำว่า "อัลกอริทึม", "วิธีการ", "กฎ" แสดงออกถึงสิ่งเดียวกัน (นั่นคือคำพ้องความหมาย) แม้ว่าข้อความดังกล่าวจะขัดแย้งกับ "คุณสมบัติของอัลกอริทึม" อย่างชัดเจนก็ตาม
นิพจน์ "คุณสมบัติของอัลกอริทึม" นั้นไม่ถูกต้องทั้งหมด ความเป็นจริงที่มีอยู่อย่างเป็นกลางมีคุณสมบัติ ตัวอย่างเช่น เราสามารถพูดคุยเกี่ยวกับคุณสมบัติของสารได้ อัลกอริทึมเป็นโครงสร้างเทียมที่เราสร้างขึ้นเพื่อให้บรรลุเป้าหมาย เพื่อให้อัลกอริทึมบรรลุวัตถุประสงค์นั้นจะต้องสร้างตามกฎเกณฑ์บางประการ ดังนั้นเราจึงต้องไม่พูดถึงคุณสมบัติของอัลกอริทึม แต่เกี่ยวกับกฎสำหรับการสร้างอัลกอริทึมหรือเกี่ยวกับข้อกำหนดของอัลกอริทึม
กฎสำหรับการสร้างอัลกอริทึม
กฎข้อแรกคือเมื่อสร้างอัลกอริธึม ก่อนอื่นจำเป็นต้องระบุชุดของออบเจ็กต์ที่อัลกอริธึมจะทำงาน การแสดงวัตถุเหล่านี้อย่างเป็นทางการ (เข้ารหัส) เรียกว่าข้อมูล อัลกอริธึมเริ่มทำงานกับชุดข้อมูลบางชุดซึ่งเรียกว่าอินพุตและผลจากการทำงานของมันจึงสร้างข้อมูลซึ่งเรียกว่าเอาต์พุต ดังนั้นอัลกอริทึมจะแปลงข้อมูลอินพุตเป็นข้อมูลเอาต์พุต
กฎนี้ช่วยให้คุณสามารถแยกอัลกอริธึมออกจาก "วิธีการ" และ "วิธีการ" ได้ทันที เราไม่สามารถสร้างอัลกอริทึมได้จนกว่าเราจะมีข้อมูลอินพุตที่เป็นทางการ
กฎข้อที่สองคืออัลกอริทึมต้องใช้หน่วยความจำในการทำงาน หน่วยความจำจัดเก็บข้อมูลอินพุตที่อัลกอริธึมเริ่มทำงาน ข้อมูลกลาง และข้อมูลเอาท์พุตซึ่งเป็นผลลัพธ์ของอัลกอริธึม หน่วยความจำไม่ต่อเนื่องเช่น ประกอบด้วยแต่ละเซลล์ ตำแหน่งหน่วยความจำที่มีชื่อเรียกว่าตัวแปร ในทฤษฎีของอัลกอริธึม ขนาดของหน่วยความจำนั้นไม่จำกัด กล่าวคือ เชื่อว่าเราสามารถจัดเตรียมหน่วยความจำจำนวนเท่าใดก็ได้ที่จำเป็นสำหรับการดำเนินการให้กับอัลกอริธึม
ในโรงเรียน "ทฤษฎีอัลกอริธึม" กฎทั้งสองข้อนี้ไม่ได้รับการพิจารณา ในเวลาเดียวกันการทำงานจริงกับอัลกอริธึม (การเขียนโปรแกรม) เริ่มต้นด้วยการนำกฎเหล่านี้ไปใช้ ในภาษาโปรแกรม การจัดสรรหน่วยความจำดำเนินการโดยตัวดำเนินการประกาศ (ตัวดำเนินการประกาศตัวแปร)
กฎข้อที่สามคือความรอบคอบ อัลกอริธึมถูกสร้างขึ้นจากแต่ละขั้นตอน (การกระทำ การดำเนินการ คำสั่ง) แน่นอนว่ามีหลายขั้นตอนที่ประกอบเป็นอัลกอริทึม
กฎข้อที่สี่คือการกำหนด หลังจากแต่ละขั้นตอน คุณต้องระบุว่าจะดำเนินการขั้นตอนใดต่อไป หรือออกคำสั่งหยุด
กฎข้อที่ห้าคือการบรรจบกัน (ประสิทธิผล) อัลกอริธึมจะต้องยุติลงหลังจากผ่านขั้นตอนจำนวนจำกัด ในกรณีนี้จำเป็นต้องระบุสิ่งที่ถือเป็นผลลัพธ์ของอัลกอริทึม
ดังนั้นอัลกอริทึมจึงเป็นแนวคิดที่ไม่ได้กำหนดไว้ในทฤษฎีอัลกอริทึม อัลกอริธึมเชื่อมโยงชุดข้อมูลอินพุตแต่ละชุดกับชุดข้อมูลเอาต์พุตบางชุด เช่น คำนวณ (ใช้งาน) ฟังก์ชัน เมื่อพิจารณาประเด็นเฉพาะในทฤษฎีอัลกอริทึม เรามักจะคำนึงถึงโมเดลเฉพาะของอัลกอริทึมอยู่เสมอ
ความหมายของคำ อัลกอริทึมคล้ายกับความหมายของคำมาก สูตรอาหาร,คำแนะนำ. อย่างไรก็ตาม อัลกอริธึมใดๆ ก็ตามที่แตกต่างจากสูตรหรือวิธีการ จำเป็นต้องมีคุณสมบัติดังต่อไปนี้
1. การดำเนินการของอัลกอริทึมจะแบ่งออกเป็นลำดับขั้นตอนการดำเนินการที่เสร็จสมบูรณ์ หลังจากเสร็จสิ้นหนึ่งการกระทำ (คำสั่ง) แล้วคุณจึงจะสามารถเริ่มดำเนินการต่อไปได้ คุณสมบัติของอัลกอริทึมนี้เรียกว่า ความรอบคอบ. นักแสดงได้รับคำสั่งให้ดำเนินการแต่ละอย่างตามคำสั่งพิเศษในบันทึกอัลกอริทึม (คำสั่ง)
2. ความเข้าใจ- อัลกอริธึมไม่ควรมีคำแนะนำซึ่งนักแสดงสามารถรับรู้ความหมายได้อย่างคลุมเครือเช่น การบันทึกอัลกอริธึมควรมีความชัดเจนและครบถ้วนโดยที่นักแสดงไม่จำเป็นต้องทำการตัดสินใจอย่างอิสระ อัลกอริธึมได้รับการออกแบบมาให้ดำเนินการโดยผู้ที่ "ไม่คิด" เสมอ. อัลกอริธึมประกอบด้วยคำสั่งที่รวมอยู่ใน SKI
ลองพิจารณาตัวอย่างที่รู้จักกันดีของอัลกอริทึม "ทุกวัน" - อัลกอริธึมการข้ามถนน: "มองไปทางซ้าย หากไม่มีรถให้เดินไปกลางถนน หากมีก็รอจนกว่าจะผ่านไป ฯลฯ” ลองนึกภาพสถานการณ์: มีรถอยู่ทางด้านซ้าย แต่รถไม่ขยับ - ยางกำลังเปลี่ยน หากคุณคิดว่าผู้ดำเนินการอัลกอริธึมต้องรอ แสดงว่าคุณเข้าใจอัลกอริธึมนี้ หากคุณตัดสินใจว่าเป็นไปได้ที่จะข้ามถนนโดยพิจารณาจากอัลกอริทึมที่ได้รับการแก้ไขเนื่องจากสถานการณ์ที่ไม่คาดฝัน (ในความคิดของคุณ!) แสดงว่าคุณยังไม่เข้าใจแนวคิดของอัลกอริทึม
3. ความมุ่งมั่น (ความแน่นอนและความแน่นอน). แต่ละคำสั่งของอัลกอริธึมจะกำหนดการกระทำที่ชัดเจนของนักแสดง และจะต้องกำหนดอย่างชัดเจนว่าคำสั่งใดจะถูกดำเนินการต่อไป นั่นคือ หากมีการนำอัลกอริทึมไปใช้กับแหล่งข้อมูลชุดเดียวกันซ้ำๆ ผลลัพธ์ที่ได้รับก็จะได้รับผลลัพธ์เดียวกันในแต่ละครั้ง
4. ประสิทธิภาพ- การดำเนินการของอัลกอริทึมจะต้องเสร็จสิ้นในจำนวนขั้นตอนที่จำกัด และจะต้องได้รับผลลัพธ์ของการแก้ปัญหา ผลลัพธ์ประการหนึ่งที่เป็นไปได้อาจเป็นการที่ปัญหาไม่มีวิธีแก้ไข
คุณสมบัติของประสิทธิผลประกอบด้วยคุณสมบัติ แขนขา- ทำอัลกอริธึมให้เสร็จสิ้นในจำนวนขั้นตอนที่จำกัด
5. ตัวละครมวล- อัลกอริทึมนี้เหมาะสำหรับการแก้ปัญหาใด ๆ จากปัญหาบางประเภทเช่น อัลกอริธึมทำงานอย่างถูกต้องกับชุดข้อมูลเริ่มต้นบางชุดซึ่งเรียกว่าโดเมนของการบังคับใช้อัลกอริธึม
คุณสมบัติของอักขระจำนวนมากจะกำหนดคุณภาพของอัลกอริทึมมากกว่าที่จะเป็นหนึ่งในคุณสมบัติบังคับ (เช่น ความรอบคอบ ความเข้าใจ ฯลฯ) มีอัลกอริธึมที่ขอบเขตการใช้งานจำกัดอยู่เพียงชุดข้อมูลอินพุตชุดเดียวหรือแม้กระทั่งไม่มีข้อมูลดังกล่าว (เช่น การได้รับตัวเลขที่ถูกต้องของตัวเลข p ในจำนวนคงที่) เป็นการถูกต้องมากกว่าที่จะกล่าวว่าอัลกอริทึมควรใช้ได้กับข้อมูลใด ๆ จากขอบเขตคำจำกัดความและคำนั้น ตัวละครมวลไม่เหมาะสำหรับการอธิบายคุณสมบัติดังกล่าวเสมอไป
แนวคิดอัลกอริธึม
โดยสรุปข้างต้นเรากำหนดสิ่งต่อไปนี้ แนวคิดอัลกอริทึม
อัลกอริทึม - คำแนะนำที่ชัดเจนและแม่นยำสำหรับนักแสดงในการดำเนินการตามลำดับขั้นตอนสุดท้ายตั้งแต่ข้อมูลเริ่มต้นไปจนถึงผลลัพธ์ที่ต้องการ
คำจำกัดความข้างต้นไม่ใช่คำจำกัดความในความหมายทางคณิตศาสตร์ของคำ เช่น นี่ไม่ใช่คำจำกัดความที่เป็นทางการ (สำหรับคำจำกัดความที่เป็นทางการของอัลกอริทึม ดูบทความ " ทฤษฎีอัลกอริธึม”).
โปรดทราบว่าสำหรับแต่ละคน นักแสดงชุดของการดำเนินการที่อนุญาต (SAC) จะถูกจำกัดอยู่เสมอ - ไม่สามารถมีผู้ดำเนินการที่อนุญาตให้ดำเนินการใดๆ ได้ การให้เหตุผลแบบถอดความของ I. Kant ยืนยันข้อความที่กำหนดไว้ดังนี้: “หากนักแสดงดังกล่าวมีอยู่จริง ในบรรดาการกระทำที่อนุญาตของเขาก็คือการสร้างศิลาที่เขาไม่สามารถยกได้ แต่สิ่งนี้ขัดแย้งกับการอนุญาตของการกระทำ “ยกหินใด ๆ ขึ้น”
เป็นที่น่าสนใจว่ามีปัญหาที่บุคคลโดยทั่วไปสามารถแก้ไขได้โดยไม่ทราบอัลกอริทึมในการแก้ปัญหา ตัวอย่างเช่น คนๆ หนึ่งมีรูปถ่ายแมวและสุนัขอยู่ข้างหน้าเขา ภารกิจคือการตรวจสอบว่าภาพถ่ายใดเป็นแมวหรือสุนัข บุคคลสามารถแก้ปัญหานี้ได้ แต่การเขียนอัลกอริทึมสำหรับการแก้ปัญหานี้ยังเป็นเรื่องยากมาก
ในทางกลับกัน มีปัญหาซึ่งโดยทั่วไปไม่สามารถสร้างขั้นตอนการแก้ปัญหาได้ นอกจากนี้ข้อเท็จจริงนี้สามารถพิสูจน์ได้อย่างเคร่งครัด คุณสามารถอ่านเกี่ยวกับเรื่องนี้ได้ในบทความ “ ปัญหาที่ไม่สามารถแก้ไขได้ด้วยอัลกอริทึม” 2.