คุณสมบัติ หมายถึง อัลกอริธึมนำไปสู่คุณสมบัติพื้นฐานของอัลกอริธึม คำจำกัดความนี้อ้างถึงคุณสมบัติของอัลกอริทึมอย่างไร

    แก้ปัญหาการค้นหาการไหลสูงสุดในเครือข่ายการขนส่ง อัลกอริทึมนี้ไม่ใช่กรณีพิเศษของอัลกอริทึมของ 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 ซึ่งเป็นผู้กำหนดกฎสำหรับการดำเนินการทางคณิตศาสตร์ ในขั้นต้น อัลกอริธึมหมายถึงกฎสำหรับการดำเนินการทางคณิตศาสตร์สี่รายการกับตัวเลขเท่านั้น ต่อมาแนวคิดนี้เริ่มใช้โดยทั่วไปเพื่อแสดงถึงลำดับของการกระทำที่นำไปสู่การแก้ปัญหาของงานที่กำหนด เมื่อพูดถึงอัลกอริธึมของกระบวนการคำนวณ จำเป็นต้องเข้าใจว่าออบเจ็กต์ที่ใช้อัลกอริธึมนั้นเป็นข้อมูล อัลกอริธึมสำหรับการแก้ปัญหาการคำนวณคือชุดกฎสำหรับการแปลงข้อมูลต้นฉบับเป็นผลลัพธ์

หลัก คุณสมบัติ อัลกอริธึมคือ:

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

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

วิธีอัลกอริธึมการบันทึกแบบกราฟิก (บล็อกไดอะแกรม) ที่แพร่หลายที่สุดเนื่องจากมีความชัดเจน

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

ด้วยอัลกอริธึมที่หลากหลายสำหรับการแก้ปัญหา กระบวนการคำนวณสามประเภทหลักสามารถแยกแยะได้:

  • เชิงเส้น;
  • การแตกแขนง;
  • วัฏจักร

เชิงเส้น เป็นกระบวนการคำนวณที่ดำเนินการทุกขั้นตอนของการแก้ปัญหาตามลำดับธรรมชาติของการบันทึกขั้นตอนเหล่านี้

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

วงจรเป็นส่วนหนึ่งของการคำนวณที่ทำซ้ำหลายครั้ง กระบวนการคำนวณที่มีหนึ่งหรือหลายรอบเรียกว่า วัฏจักร . ขึ้นอยู่กับจำนวนการดำเนินการ รอบจะถูกแบ่งออกเป็นรอบโดยมีจำนวนการทำซ้ำ (กำหนดไว้ล่วงหน้า) ที่แน่นอน และรอบที่มีจำนวนการทำซ้ำไม่จำกัด จำนวนการทำซ้ำครั้งหลังขึ้นอยู่กับความพึงพอใจของเงื่อนไขบางประการที่ระบุความจำเป็นในการดำเนินการรอบ ในกรณีนี้ สามารถตรวจสอบเงื่อนไขได้เมื่อเริ่มต้นวงจร - จากนั้นเรากำลังพูดถึงวงจรที่มีเงื่อนไขเบื้องต้น หรือในตอนท้าย - จากนั้นจะเป็นวงจรที่มีเงื่อนไขภายหลัง

คุณสมบัติของอัลกอริทึม

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

คุณสมบัติเหล่านี้คือ:

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

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

ประสิทธิภาพ (ความจำกัด) - อัลกอริธึมจะต้องนำไปสู่การแก้ปัญหาในจำนวนขั้นตอนที่จำกัด

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

กฎสำหรับการดำเนินการทางคณิตศาสตร์หรือการสร้างทางเรขาคณิตเป็นอัลกอริทึม ในขณะเดียวกันคำถามก็ยังไม่มีคำตอบ: แนวคิดของอัลกอริทึมแตกต่างจากแนวคิดเช่น "วิธีการ", "วิธีการ", "กฎ" อย่างไร คุณยังสามารถเจอข้อความที่ว่าคำว่า "อัลกอริทึม", "วิธีการ", "กฎ" แสดงออกถึงสิ่งเดียวกัน (นั่นคือคำพ้องความหมาย) แม้ว่าข้อความดังกล่าวจะขัดแย้งกับ "คุณสมบัติของอัลกอริทึม" อย่างชัดเจนก็ตาม

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

กฎสำหรับการสร้างอัลกอริทึม

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

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

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

ในโรงเรียน "ทฤษฎีอัลกอริธึม" กฎทั้งสองข้อนี้ไม่ได้รับการพิจารณา ในเวลาเดียวกันการทำงานจริงกับอัลกอริธึม (การเขียนโปรแกรม) เริ่มต้นด้วยการนำกฎเหล่านี้ไปใช้ ในภาษาโปรแกรม การจัดสรรหน่วยความจำดำเนินการโดยตัวดำเนินการประกาศ (ตัวดำเนินการประกาศตัวแปร)

กฎข้อที่สามคือความรอบคอบ อัลกอริธึมถูกสร้างขึ้นจากแต่ละขั้นตอน (การกระทำ การดำเนินการ คำสั่ง) แน่นอนว่ามีหลายขั้นตอนที่ประกอบเป็นอัลกอริทึม

กฎข้อที่สี่คือการกำหนด หลังจากแต่ละขั้นตอน คุณต้องระบุว่าจะดำเนินการขั้นตอนใดต่อไป หรือออกคำสั่งหยุด

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

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

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

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

2. ความเข้าใจ- อัลกอริธึมไม่ควรมีคำแนะนำซึ่งนักแสดงสามารถรับรู้ความหมายได้อย่างคลุมเครือเช่น การบันทึกอัลกอริธึมควรมีความชัดเจนและครบถ้วนโดยที่นักแสดงไม่จำเป็นต้องทำการตัดสินใจอย่างอิสระ อัลกอริธึมได้รับการออกแบบมาให้ดำเนินการโดยผู้ที่ "ไม่คิด" เสมอ. อัลกอริธึมประกอบด้วยคำสั่งที่รวมอยู่ใน SKI

ลองพิจารณาตัวอย่างที่รู้จักกันดีของอัลกอริทึม "ทุกวัน" - อัลกอริธึมการข้ามถนน: "มองไปทางซ้าย หากไม่มีรถให้เดินไปกลางถนน หากมีก็รอจนกว่าจะผ่านไป ฯลฯ” ลองนึกภาพสถานการณ์: มีรถอยู่ทางด้านซ้าย แต่รถไม่ขยับ - ยางกำลังเปลี่ยน หากคุณคิดว่าผู้ดำเนินการอัลกอริธึมต้องรอ แสดงว่าคุณเข้าใจอัลกอริธึมนี้ หากคุณตัดสินใจว่าเป็นไปได้ที่จะข้ามถนนโดยพิจารณาจากอัลกอริทึมที่ได้รับการแก้ไขเนื่องจากสถานการณ์ที่ไม่คาดฝัน (ในความคิดของคุณ!) แสดงว่าคุณยังไม่เข้าใจแนวคิดของอัลกอริทึม

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

4. ประสิทธิภาพ- การดำเนินการของอัลกอริทึมจะต้องเสร็จสิ้นในจำนวนขั้นตอนที่จำกัด และจะต้องได้รับผลลัพธ์ของการแก้ปัญหา ผลลัพธ์ประการหนึ่งที่เป็นไปได้อาจเป็นการที่ปัญหาไม่มีวิธีแก้ไข

คุณสมบัติของประสิทธิผลประกอบด้วยคุณสมบัติ แขนขา- ทำอัลกอริธึมให้เสร็จสิ้นในจำนวนขั้นตอนที่จำกัด

5. ตัวละครมวล- อัลกอริทึมนี้เหมาะสำหรับการแก้ปัญหาใด ๆ จากปัญหาบางประเภทเช่น อัลกอริธึมทำงานอย่างถูกต้องกับชุดข้อมูลเริ่มต้นบางชุดซึ่งเรียกว่าโดเมนของการบังคับใช้อัลกอริธึม

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

แนวคิดอัลกอริธึม

โดยสรุปข้างต้นเรากำหนดสิ่งต่อไปนี้ แนวคิดอัลกอริทึม

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

คำจำกัดความข้างต้นไม่ใช่คำจำกัดความในความหมายทางคณิตศาสตร์ของคำ เช่น นี่ไม่ใช่คำจำกัดความที่เป็นทางการ (สำหรับคำจำกัดความที่เป็นทางการของอัลกอริทึม ดูบทความ " ทฤษฎีอัลกอริธึม”).

โปรดทราบว่าสำหรับแต่ละคน นักแสดงชุดของการดำเนินการที่อนุญาต (SAC) จะถูกจำกัดอยู่เสมอ - ไม่สามารถมีผู้ดำเนินการที่อนุญาตให้ดำเนินการใดๆ ได้ การให้เหตุผลแบบถอดความของ I. Kant ยืนยันข้อความที่กำหนดไว้ดังนี้: “หากนักแสดงดังกล่าวมีอยู่จริง ในบรรดาการกระทำที่อนุญาตของเขาก็คือการสร้างศิลาที่เขาไม่สามารถยกได้ แต่สิ่งนี้ขัดแย้งกับการอนุญาตของการกระทำ “ยกหินใด ๆ ขึ้น”

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

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