Voss의 프로그램 정의는 알고리즘과 데이터 구조의 두 부분으로 나뉩니다. 알고리즘은 컴퓨터 실행 프로세스를 중심으로 반영합니다. 데이터 구조는 대량의 데이터 간의 구조적 관계를 나타내며, 좋은 데이터 구조를 설계하면 처리되는 개체에 대한 알고리즘을 크게 단순화할 수 있습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.
PASCAL 언어의 창시자인 Witrh는 프로그램에 대해 간결하고 정확한 정의를 내렸습니다.
알고리즘 + 데이터 구조 = 프로그램(알고리즘 + 데이터 구조 = 프로그램)
알고리즘은 컴퓨터 프로세스의 실행을 집중적으로 반영합니다. 데이터 구조는 처리되는 객체의 대량 데이터 간의 구조적 관계로, 데이터 구조를 설계하면 알고리즘을 크게 단순화할 수 있습니다. 알고리즘과 데이터 구조는 프로그래밍의 두 가지 중요한 측면입니다. 초기 프로그래밍 언어는 데이터 구조를 설명하는 데 매우 취약하여 알고리즘 작업이 가중되었습니다. 언어가 발전함에 따라 데이터 설명 기능이 점차 향상되었으며 이는 언어 개발의 중요한 신호이기도 합니다.
알고리즘은 문제 해결 솔루션에 대한 정확하고 완전한 설명을 의미합니다. 문제 해결을 위한 일련의 명확한 지침입니다. 알고리즘은 문제 해결을 위한 전략적 메커니즘을 설명하는 체계적인 방법을 나타냅니다. 즉, 특정 입력 사양에 대해 제한된 시간 내에 필요한 출력을 얻는 것이 가능합니다. 알고리즘에 결함이 있거나 문제에 적합하지 않은 경우 알고리즘을 실행해도 문제가 해결되지 않습니다. 서로 다른 알고리즘은 동일한 작업을 완료하기 위해 서로 다른 시간, 공간 또는 효율성을 사용할 수 있습니다. 알고리즘의 품질은 공간 복잡도와 시간 복잡도로 측정할 수 있습니다.
알고리즘의 명령은 실행 시 초기 상태와 (비어 있을 수도 있는) 초기 입력에서 시작하여 제한적이고 명확하게 정의된 일련의 상태를 거쳐 최종적으로 출력을 생성하고 끝에서 멈출 수 있는 계산을 설명합니다. 상태. 한 상태에서 다른 상태로의 전환이 반드시 결정적일 필요는 없습니다. 무작위 알고리즘을 포함한 일부 알고리즘에는 무작위 입력이 포함되어 있습니다.
형식 알고리즘의 개념은 부분적으로 힐베르트의 결정 문제를 해결하려는 시도에서 시작되었으며 효율적인 계산 가능성 또는 효율적인 방법을 정의하려는 후속 시도에서 구체화되었습니다. 이러한 시도에는 각각 1930년, 1934년, 1935년에 Kurt Gödel, Jacques Herbrand 및 Stephen Cole Crane이 제안한 재귀 함수, 1936년 Alonzo Church가 제안한 람다 미적분학, 1936년 Emil Leon Post의 공식 1 및 Alan Turing의 Turing Machine이 포함되었습니다. 1937년. 오늘날에도 직관적인 아이디어를 형식적인 알고리즘으로 정의하기 어려운 경우가 종종 있습니다.
데이터 구조는 구조적 특성을 지닌 데이터 요소의 집합입니다. 데이터의 논리적 구조, 데이터의 물리적 구조 및 이들 사이의 관계를 연구하고 이 구조에 대한 적절한 동작을 정의하고 해당 알고리즘을 설계합니다. 이러한 작업 후에 얻은 구조는 여전히 원래 구조 유형을 유지합니다. 간단히 말해서, 데이터 구조는 서로 하나 이상의 특정 관계를 갖는 데이터 요소의 모음, 즉 "구조"를 가진 데이터 요소의 모음입니다. "구조"는 데이터 요소 간의 관계를 말하며, 논리적 구조와 저장 구조로 구분됩니다.
데이터의 논리적 구조와 물리적 구조는 데이터 구조의 밀접하게 관련된 두 가지 측면입니다. 동일한 논리적 구조가 다른 저장 구조에 해당할 수 있습니다. 알고리즘의 설계는 데이터의 논리적 구조에 따라 달라지며, 알고리즘의 구현은 지정된 저장 구조에 따라 달라집니다.
데이터 구조의 연구 내용은 복잡한 소프트웨어 시스템을 구성하는 기초가 되며, 핵심 기술은 분해와 추상화입니다. 분해를 통해 데이터의 세 가지 수준을 추상화를 통해 나눌 수 있으며, 데이터 요소의 특정 내용을 버리고 논리적 구조를 얻습니다. 마찬가지로 작업의 정의는 처리 요구 사항을 다양한 기능으로 분해한 다음 추상화를 통해 구현 세부 사항을 삭제하여 얻습니다. 위의 두 가지 측면을 결합하면 문제를 데이터 구조로 변환할 수 있습니다. 이는 구체적인(즉, 구체적인 문제)에서 추상(즉, 데이터 구조)으로 가는 과정입니다. 그런 다음 구현 세부 사항을 고려하여 스토리지 구조 및 구현 작업을 추가로 획득하여 설계 작업을 완료합니다. 이는 추상(즉, 데이터 구조)에서 구체적(즉, 특정 구현)으로 진행되는 프로세스입니다.
더 많은 컴퓨터 관련 지식을 알고 싶다면 FAQ 칼럼을 방문해주세요!
위 내용은 Voss의 프로그램 정의는 여러 부분으로 나누어진다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!