Разница между псевдокодом и алгоритмом?


17

Технически, есть ли разница между этими двумя словами или мы можем использовать их взаимозаменяемо? Оба они более или менее описывают логическую последовательность шагов, которые следуют при решении проблемы. не так ли? Так почему же мы на самом деле используем два таких слова, если они предназначены для того, чтобы говорить об одном и том же?

Или, если они не являются синонимами, что их отличает? В каких контекстах мы должны использовать слово псевдокод против слова алгоритм?


4
Алгоритм быстрой сортировки. Псевдокод: «Сделай мне бутерброд, а потом сделай, принеси мне».
Нейл

Смотрите этот ответ на другой вопрос. Там я описал связь между алгоритмом и псевдокодом.
Горан Йович

3
Краткая версия: «Псевдокод - один из способов представления алгоритма»
Горан Йович

3
@Neil или даже SUDO делают мне бутерброд xkcd.com/149
StuperUser

Ответы:


37

Определение алгоритма из Википедии:

В математике и информатике алгоритм - это эффективный метод, выраженный в виде конечного списка четко определенных инструкций для вычисления функции. Алгоритмы используются для расчета, обработки данных и автоматического рассуждения.

Алгоритмы могут быть описаны различными способами, от чисто математических формул до сложных графов, чаще, чем нет, без псевдокода.

Псевдокод описывает, как вы будете реализовывать алгоритм, не вдаваясь в синтаксические детали.

Так что нет, они на самом деле не являются синонимами.


8

Алгоритм является идеей о том , как писать код. Псевдокод - это письменный текст, который вам нужен, чтобы донести эту идею.


Ницца! Коротко и прямо. Но я бы сказал «письменный текст», чем «письменный текст». Как вы думаете?
Лучано

6

«Псевдокод» означает «алгоритм», а «английский» означает «шутка-тук».

Алгоритм - это формальная структура для чего-то, что может быть выражено в псевдокоде или в реальном коде.

Шутка - формальная структура чего-то, что может быть выражено на английском или на каком-либо другом языке. (В других культурах шутят? Я даже не знаю.)


Я так не думаю. По крайней мере, на португальском языке нет ничего похожего в этой игре. Итак, я бы сказал, что нет и в других романских языках, таких как испанский и итальянский. Я не буду включать французский, потому что он имел давние отношения с английским на британских островах много веков назад, и я не знаю других романских языков, таких как румынский и другие.
Лучано

3

Существует только один алгоритм быстрой сортировки, который существует в мире чистых идей Платона. Может быть любое количество различных описаний псевдокода. Я думаю, что я бы определил псевдокод как текст, который выглядит примерно как компьютерный код и может быть переведен опытным программистом в реальный компьютерный код без каких-либо творческих скачков.

Так что нет, я бы не стал использовать термины взаимозаменяемо.


2

Алгоритм - это систематический логический подход, используемый для решения проблем в компьютере, в то время как псевдокод - это утверждение на простом английском языке, которое позже может быть переведено на язык программирования (программу).


2

Алгоритм - это семантика, а псевдокод - это всего лишь синтаксис сообщения о решении проблемы. Это означает, что алгоритм является реальным способом решения проблемы, в то время как псевдокод является просто способом выражения этого пути.

Алгоритм имеет то же значение (семантическое), если вы выражаете его каким-либо образом (синтаксис), будь то язык программирования C, псевдокод или английский язык.


1

Псевдокод, как я понимаю, является посредником между алгоритмом и реализуемой программой. Вы можете основывать свой псевдокод на алгоритме. Это содержит переносимые шаги для реализации.

С другой стороны, алгоритм подразумевает общую логику. последовательными шагами, чтобы решить проблему. если он представлен схематически, он называется блок-схемой.

Некоторые могут отнести это к псевдокоду, являющемуся общим термином в разработке программного обеспечения для бизнеса, когда разработчики бизнес-объектов на стороне клиента пишут псевдокод на основе требований. Это дается программисту / разработчику для реализации.

Алгоритм, который вы найдете более распространенным в терминологии программирования, таких как системное программирование, поиск, сортировка, практически любой, где есть сложная логика для реализации.


1

Хотя псевдокод кажется ближе к коду, чем к алгоритму, на практике псевдокод менее формален и представляет собой описание более высокого уровня. Например, вы можете описать шахматный компьютер как псевдокод:

  • разместить начальные части в их местах
  • показать доску
  • пока игра не окончена
    • сделать ход и выставить доску
    • предложить пользователю перейти
    • заставить пользователей двигаться

Да, это псевдокод, он полезен в качестве хорошей отправной точки, но затеняет многие детали. Он не учитывает сложности и различия в реализации, но самое большое преимущество заключается в том, что он позволяет вам осмыслить всю ситуацию без необходимости разбираться со всеми деталями.

Вы можете пересмотреть его, добавив еще один уровень так:

  • разместить начальные части в их местах
  • показать доску
  • в то время как доска не мат или ничья
    • составить список легальных ходов белых
    • выбрать лучшее по некоторым критериям
    • сделать этот ход и вычислить полученную доску
    • посмотреть, если произошел мат или ничья
    • табло
    • составить список ходов черных
    • запрашивать у пользователя законный ход для ввода
    • сделать этот ход и вычислить полученную доску
    • посмотреть, если произошел мат или ничья
    • табло

Теперь вы можете написать псевдокод для каждого из основных шагов, таких как «составить список легальных ходов черных», например:

  • за каждую черную фигуру
    • для типа части в данном месте
      • составить список следующих возможных мест

Теперь вы можете видеть, что мощь псевдокода действительно заключается в его способности показать всю ситуацию за один раз, а затем позволяет вам обращаться к деталям по частям. Слабость в том, что любой шаг не является определенным простым шагом.

Алгоритм обычно выбирает один из этих шагов и детализирует различные структуры данных на символическом языке, чтобы вы могли эффективно достичь цели этого шага.

Например, 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:....

Вы можете видеть, что алгоритм должен быть очень точным, чтобы быть полезным.

Это гарантирует несколько вещей: что цели будут достигнуты без ошибок, в первую очередь. Шаги очень подробны и выполняются механизированным способом, и эти шаги достаточно малы, чтобы вы могли изменить их порядок, чтобы повысить эффективность (скорость), с которой вы завершаете задачу.


Похоже, что это декомпозиция алгоритма сверху вниз, выраженная в псевдокоде на каждом шаге.
Натан Тагги

0

Исходя из моего опыта, псевдокод всегда был написан функциональным персоналом (людьми, которые владеют процессом) как способ выражения бизнес-правил, применимых к процессу, модулю или подсистеме.

Алгоритм - это набор логических выражений для решения как можно более конкретной задачи.


0

Алгоритм - это то, что представлено в математических терминах. Он включает в себя анализ, базовую реализацию (даже если это выражено в псевдокоде), соображения сложности (лучший, средний и наихудший анализ и т. Д.).

Псевдокод - это читаемое человеком представление программы. Даже это может быть использовано для описания алгоритма.


-2

Псевдокод означает, что одиночный код & может быть инструкцией. Здесь псевдокод означает оператор, который используется для легкого понимания языка компьютерного программирования ... он помогает в анализе программного кода ... , где алгоритм - это конечный логический шаг инструкций для решения проблемы.


1
это , кажется, не предлагает ничего существенного по точкам сделанных и объяснено в предыдущих 10 ответов
комар
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.