ความแตกต่างระหว่างรหัสหลอกและอัลกอริทึมหรือไม่


17

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

หรือในกรณีที่พวกเขาไม่ใช่คำพ้องความหมายอะไรที่ทำให้พวกเขาแตกต่าง? ในบริบทใดที่เราควรใช้โค้ดหลอกคำเทียบกับอัลกอริทึมคำ


4
อัลกอริทึมคือ quicksort Pseudocode คือ "ทำให้ฉันเป็นแซนด์วิชจากนั้นเมื่อทำเสร็จแล้วก็นำมาให้ฉัน"
Neil

ดูคำตอบของคำถามอื่น มีฉันอธิบายความสัมพันธ์ระหว่างอัลกอริทึมและ pseudocode
Goran Jovic

3
รุ่นสั้น: 'รหัสหลอกเป็นหนึ่งในวิธีที่จะแสดงอัลกอริทึม'
Goran Jovic

3
@ Neil หรือ SUDO ทำให้ฉันเป็นแซนวิชxkcd.com/149
StuperUser

คำตอบ:


37

นิยามของอัลกอริทึมของ Wikipedia:

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

อัลกอรึทึมสามารถอธิบายได้หลายวิธีตั้งแต่สูตรทางคณิตศาสตร์ล้วนๆไปจนถึงกราฟที่ซับซ้อนหลายครั้งมากกว่าที่ไม่มีโดยไม่มีโค้ดเทียม

Pseudocode อธิบายถึงวิธีที่คุณจะใช้อัลกอริทึมโดยไม่ต้องทำความเข้าใจกับรายละเอียดเกี่ยวกับการสร้างประโยค

ไม่เลยพวกเขาไม่ได้มีความหมายเหมือนกันจริงๆ


8

ขั้นตอนวิธีการคือแนวความคิดเกี่ยวกับวิธีการเขียนโค้ดด้วย รหัสเทียมคือข้อความที่เป็นลายลักษณ์อักษรที่คุณต้องการสื่อสารความคิดนั้น


ดี! สั้นและตรง แต่ฉันจะพูดว่า "ข้อความที่เขียน" กว่า "ข้อความที่เขียน" คุณคิดอย่างไร?
Luciano

6

"Pseudocode" คือ "อัลกอริทึม" ในขณะที่ "อังกฤษ" คือ "เรื่องตลก"

อัลกอริทึมเป็นโครงสร้างที่เป็นทางการสำหรับบางสิ่งบางอย่างที่อาจแสดงเป็น pseudocode หรือในโค้ดจริง

เรื่องตลกที่ทำให้เป็นเรื่องยากคือโครงสร้างที่เป็นทางการสำหรับสิ่งที่อาจแสดงออกเป็นภาษาอังกฤษหรือในภาษาอื่น (วัฒนธรรมอื่นทำมุกตลก ๆ หรือเปล่า? ฉันไม่รู้ด้วยซ้ำ)


ฉันไม่คิดอย่างนั้น อย่างน้อยก็ไม่มีอะไรคล้ายกันในภาษาโปรตุเกสเกี่ยวกับเกมน็อคน็อค ดังนั้นฉันจะบอกว่าไม่มีภาษาโรมานซ์อื่น ๆ เช่นสเปนและอิตาลี ฉันจะไม่รวมภาษาฝรั่งเศสเพราะมันมีความสัมพันธ์กับภาษาอังกฤษในหมู่เกาะอังกฤษมานานหลายศตวรรษแล้วและฉันไม่รู้จักภาษาโรมานซ์อื่น ๆ เช่นโรมาเนียและอื่น ๆ
Luciano

3

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

ไม่เลยฉันจะไม่ใช้เงื่อนไขแทนกัน


2

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


2

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

อัลกอริทึมมีความหมายเหมือนกัน (semantic) หากคุณแสดงมันในทางใดทางหนึ่ง (ไวยากรณ์) ไม่ว่าจะเป็นภาษาการเขียนโปรแกรม C, รหัสหลอกหรือภาษาอังกฤษ


1

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

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

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

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


1

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

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

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

คุณสามารถแก้ไขได้โดยเพิ่มระดับอีกหนึ่งระดับดังนี้:

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

ตอนนี้คุณสามารถเขียน pseudocode สำหรับแต่ละขั้นตอนสำคัญเช่น "ทำรายการการเคลื่อนไหวทางกฎหมายของ black" ดังนี้:

  • สำหรับแต่ละชิ้นสีดำ
    • สำหรับประเภทชิ้นในสถานที่ที่กำหนด
      • ทำรายการสถานที่ที่เป็นไปได้ต่อไป

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

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

ตัวอย่างเช่นget_legal_moves(board, color)มีค่าของการออกแบบอัลกอริทึม:

get_legal_moves(board, color):
    for i,j in board_dimensions
        if piece_at i,j is of color
            if piece type is KNIGHT
                add the following to the next moves list:
                    location i+1 j+2, i-1 j+2... etc
            if piece type is rook
                add locations:....

คุณจะเห็นว่าอัลกอริทึมจะต้องแม่นยำมากที่จะเป็นประโยชน์

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


สิ่งนี้ดูเหมือนจะเป็นการสลายตัวของอัลกอริธึมจากบนลงล่างซึ่งแสดงเป็น pseudocode ในทุกขั้นตอน
นาธาน Tuggy

0

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

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


0

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

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


-2

Pseudo หมายถึง single & code อาจเป็นคำสั่ง .. ที่นี่ Pseudo-code หมายถึงคำสั่งที่ใช้ในการเข้าใจภาษาการเขียนโปรแกรมคอมพิวเตอร์ได้อย่างง่ายดาย ... มันช่วยในการ Analise รหัสการวางโปรแกรม .. . โดยที่ algorithm เป็นขั้นตอน จำกัด แน่นอนของคำแนะนำในการแก้ปัญหา


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