의사 코드와 알고리즘의 차이점은 무엇입니까?


17

기술적으로이 두 단어 사이에 차이점이 있습니까? 아니면 두 단어를 서로 바꿔서 사용할 수 있습니까? 둘 다 문제를 해결하는 데 따르는 논리적 단계를 설명합니다. 그렇지 않습니까? 그렇다면 왜 우리는 두 단어가 같은 말을하려고합니까?

또는 동의어가 아닌 경우 차별화하는 단어는 무엇입니까? 어떤 상황에서 단어 의사 코드와 단어 알고리즘을 사용해야합니까?


4
알고리즘은 퀵 정렬입니다. 의사 코드는 "샌드위치를 ​​만들어서 만든 후에 나에게 가져 오십시오"입니다.
Neil

다른 질문에 대한 이 답변 을 참조하십시오 . 나는 알고리즘과 의사 코드 사이의 관계를 설명했다.
Goran Jovic

3
짧은 버전 : '의사 코드는 알고리즘을 나타내는 방법 중 하나입니다'
Goran Jovic

3
@Neil 또는 심지어 SUDO 나 샌드위치 만들기 xkcd.com/149
StuperUser

답변:


37

알고리즘의 위키피디아 정의 :

수학과 컴퓨터 과학에서 알고리즘은 함수를 계산하기위한 잘 정의 된 명령의 유한 목록으로 표현되는 효과적인 방법입니다. 알고리즘은 계산, 데이터 처리 및 자동 추론에 사용됩니다.

알고리즘은 의사 코드없이 순수한 수학 공식부터 복잡한 그래프에 이르기까지 다양한 방식으로 설명 할 수 있습니다.

의사 코드는 구문 세부 정보를 얻지 않고 알고리즘을 구현하는 방법을 설명합니다.

아니, 그들은 실제로 동의어가 아닙니다.


8

알고리즘 코드를 작성하는 방법에 대한 생각이다. 의사 코드 는 해당 아이디어를 전달하는 데 필요한 텍스트입니다.


좋은! 짧고 똑바로. 그러나 나는 "필기 텍스트"보다 "필기 텍스트"라고 말할 것입니다. 어떻게 생각해?
Luciano

6

"의사 코드"는 "알고리즘"이고 "영어"는 "노크 노크"입니다.

알고리즘은 의사 코드 또는 실제 코드 로 표현 될 수있는 형식의 구조입니다 .

knock-knock 농담은 영어 또는 다른 언어로 표현 될 수있는 형식의 구조입니다. (다른 문화는 노크 농담을합니까? 나도 몰라요.)


나는 그렇게 생각하지 않습니다. 적어도 노크 게임에 대해서는 포르투갈어로 비슷한 것이 없습니다. 스페인어 나 이탈리아어와 같은 다른 로맨스 언어도 없다고 말하고 싶습니다. 수세기 전에 영국 섬에서 영어를 오랫동안 사용했기 때문에 프랑스어를 포함시키지 않을 것이며 루마니아어 및 기타와 같은 다른 로맨스 언어를 알지 못합니다.
Luciano

3

플라톤의 순수한 아이디어 세계에 존재하는 일종의 퀵 정렬 알고리즘이 하나뿐입니다. 그것에 대한 여러 다른 의사 코드 설명이있을 수 있습니다. 필자는 의사 코드를 컴퓨터 코드와 거의 비슷한 텍스트로 정의하고 숙련 된 프로그래머가 창의적인 도약을하지 않고도 실제 컴퓨터 코드로 변환 할 수 있다고 생각합니다.

그래서, 나는 그 용어를 상호 교환 적으로 사용하지 않을 것입니다.


2

알고리즘은 컴퓨터의 문제를 해결하는 데 사용되는 체계적인 논리적 접근 방법이며 유사 코드는 나중에 영어 (프로그램)로 번역 될 수있는 평범한 영어 문장입니다.


2

알고리즘은 의미 론적 이지만 의사 코드는 문제 해결에 대한 의사 소통 의 구문 일뿐 입니다. 이는 의사 코드가 그와 같은 방식으로 표현되는 반면 알고리즘은 문제가 해결되는 실제 방법이라는 것을 의미합니다.

알고리즘은 C 프로그래밍 언어, 의사 코드 또는 영어와 같은 방식으로 (구문) 표현하는 경우 동일한 의미 (의미 적)를 갖습니다.


1

내가 이해하는 의사 코드는 알고리즘과 구현 된 프로그램 사이의 중개자입니다. 의사 코드는 알고리즘을 기반으로 할 수 있습니다. 여기에는 구현 가능한 전송 단계가 포함됩니다.

반면에 알고리즘은 전체 논리를 의미합니다. 순차적 인 단계로 문제를 해결합니다. 다이어그램으로 표현 된 경우이를 플로우 차트라고합니다.

일부는 이것을 클라이언트 측 Business Object 개발자가 요구 사항을 기반으로 의사 코드를 작성하는 비즈니스 소프트웨어 개발에서 흔히 사용되는 의사 코드로 이것을 이것을 의사 코드라고합니다. 프로그래머 / 개발자에게 구현할 것입니다.

알고리즘 당신은 시스템 프로그래밍, 검색, 분류와 같은 프로그래밍 용어에서 기본적으로 복잡한 논리가 구현되는 곳에서 더 일반적으로 발견됩니다.


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:....

유용한 알고리즘이 매우 정확해야 함을 알 수 있습니다.

목표는 무엇보다 먼저 오류없이 충족 될 것입니다. 단계는 매우 상세하고 자동화 된 방식으로 실행 가능하며 단계를 재정렬하여 작업을 완료하는 효율성 (속도)을 높이기 위해 순서를 바꿀 수있을 정도로 작습니다.


이것은 모든 단계에서 의사 코드로 표현되는 하향식 알고리즘 분해로 보입니다.
Nathan Tuggy

0

내 경험에서 의사 코드는 프로세스, 모듈 또는 하위 시스템에 적용되는 비즈니스 규칙을 표현하는 방법으로 기능 담당자 (프로세스를 소유 한 사람)가 항상 작성했습니다.

알고리즘은 가능한 한 특정 작업을 해결하기위한 결정적인 논리 문 집합입니다.


0

알고리즘은 수학 용어로 표현되는 것입니다. 여기에는 분석, 기본 구현 (의사 코드로 표현 되더라도), 복잡성 고려 사항 (최고, 평균 및 최악의 분석 등)이 포함됩니다.

의사 코드는 사람이 읽을 수있는 프로그램 표현입니다. 그것조차도 알고리즘을 설명하는 데 사용될 수 있습니다.


-2

의사는 단일 및 코드가 명령 일 수 있음을 의미합니다. 여기에서 의사 코드는 컴퓨터 프로그래밍 언어를 쉽게 이해하는 데 사용되는 문을 의미합니다. 프로그래밍 코드를 분석하는 데 도움이됩니다. . 여기서 알고리즘은 문제를 해결하기위한 유한 논리적 인 명령 단계입니다.


1
이것은 이전의 10 가지 답변에서 제시되고 설명 된 점들에 비해 실질적인 것을 제공하지 않는 것 같습니다
gnat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.