본문 바로가기
기초탄탄/Algorithm

[Algorithm] Algorithm 소개

by Peter.JH 2023. 11. 4.
728x90

 

알고리즘은 원하는 결과를 생성하기 위해 특정 순서로 수행해야 하는 일련의 명령을 정의하는 단계별 절차입니다. 

알고리즘은 일반적으로 기본 언어와 독립적으로 개발됩니다. 즉, 하나 이상의 프로그래밍 언어로 알고리즘을 구현할 수 있습니다. 모호성, 정교함, 효율성 및 언어 독립성은 알고리즘의 일부 특성입니다. 알고리즘의 확장성과 성능은 그 중요성에 기여하는 주요 요인입니다. 

 

 

What is an Algorithm?

알고리즘이라는 단어는 "계산 또는 기타 문제 해결 작업에서 따라야 하는 일련의 유한한 규칙 또는 지침" 또는 "자주 재귀 작업을 포함하는 유한한 수의 단계에서 수학 문제를 해결하는 절차"를 의미합니다.

  • 알고리즘은 컴퓨터가 계산 또는 기타 문제 해결 작업을 수행하기 위해 따라야 하는 일련의 명령입니다. 
  • 공식적인 정의에 따르면 알고리즘은 특정 작업을 수행하기 위해 특정 순서로 수행되는 유한한 명령 집합입니다. 
  • 전체 프로그램이나 코드가 아닙니다. 순서도 또는 의사 코드의 형태로 비공식 설명으로 표현되는 문제에 대한 간단한 논리입니다. 
  • 전체 프로그램이나 코드가 아닙니다. 순서도 또는 의사 코드의 형태로 비공식 설명으로 표현되는 문제에 대한 간단한 논리입니다.

  • 문제: 문제는 프로그램이나 일련의 지침을 개발해야 하는 실제 문제 또는 실제 instance problem으로 정의할 수 있습니다. 알고리즘은 명령 집합입니다. 
    • instance problem: 문제에 대한 솔루션을 계산하는 데 필요한 모든 입력입니다.
  • 알고리즘: 알고리즘은 문제를 위해 설계된 단계별 프로세스로 정의됩니다. 
  • 입력(Input): 알고리즘을 설계한 후 알고리즘에 필요하고 원하는 입력이 제공됩니다. 
  • 출력(Output): 프로그램의 결과 또는 결과를 출력이라고 합니다.

 

 

What is the need for algorithms:

 

1. 복잡한 문제를 효율적이고 효과적으로 해결하기 위해서는 알고리즘이 필요합니다.

 

2. 프로세스를 자동화하고 보다 안정적이고 빠르고 쉽게 수행할 수 있도록 도와줍니다.

 

3. 알고리즘은 또한 인간이 수동으로 수행하기 어렵거나 불가능한 작업을 컴퓨터가 수행할 수 있도록 합니다.

 

4.수학, 컴퓨터 과학, 공학, 금융 및 기타 여러 분야에서 프로세스를 최적화하고 데이터를 분석하며 예측하고 문제에 대한 솔루션을 제공하는 데 사용됩니다.

 

 

어떤 알고리즘이 가장 좋을까??

 

'어떤 알고리즘이 가장 좋은가?'라는 질문에는 정확한 답변이 없습니다. 알고리즘의 선택은 해결하려는 문제의 특성, 사용 가능한 자원, 필요한 성능 등 여러 요소를 고려해야 합니다.

예를 들어, 데이터 정렬에 사용되는 알고리즘 중 "버블 정렬"은 구현이 간단하지만, 데이터의 양이 많아지면 비효율적일 수 있습니다. 반면, "퀵 정렬"이나 "병합 정렬"은 복잡하지만, 대량의 데이터를 빠르게 정렬할 수 있습니다.

또한, 최단 경로를 찾는 문제의 경우 '다익스트라 알고리즘'이나 '벨만-포드 알고리즘' 등이 있지만, 각 알고리즘은 적용 가능한 상황과 성능이 다릅니다.

따라서, 가장 좋은 알고리즘은 문제 상황과 요구사항에 따라 달라진다고 할 수 있습니다. 상황에 맞는 알고리즘을 선택하고, 그 알고리즘을 효과적으로 구현하는 능력이 중요합니다.

 

그렇다면 문제사항과 요구사항은 어떤게 있을까?

 

문제사항과 요구사항은 주어진 문제의 성격과 해결을 위해 필요한 조건을 나타냅니다.

 

  •  문제사항: 이것은 해결해야 하는 문제의 실질적인 내용을 나타내며, 문제의 성격, 복잡성, 제한사항 등을 포함합니다. 예를 들어, 대량의 데이터를 빠르게 정렬해야 하는 경우, 이는 문제사항이 될 수 있습니다.
  • 요구사항: 이것은 문제를 해결하는 데 필요한 특정한 조건이나 기능을 나타냅니다. 요구사항은 기능적 요구사항과 비기능적 요구사항으로 나뉩니다.
    • 기능적 요구사항은 시스템이 수행해야 하는 작업이나 제공해야 하는 서비스를 설명합니다. 예를 들어, 사용자가 입력한 데이터를 검색하고 결과를 반환하는 기능 등이 있습니다.
    • 비기능적 요구사항은 시스템이 어떻게 동작해야 하는지에 대한 제한사항이나 조건을 설명합니다. 예를 들어, 시스템의 성능(응답 시간, 처리 용량 등), 보안, 사용성, 신뢰성 등이 있습니다.

따라서, 문제를 해결하기 위한 알고리즘을 선택하거나 설계할 때는 이러한 문제사항과 요구사항을 먼저 파악하고, 그에 따라 가장 적합한 알고리즘을 선택해야 합니다. 

728x90

'기초탄탄 > Algorithm' 카테고리의 다른 글

[백준 11060번] 점프 점프  (4) 2024.06.04
BFS, DFS  (0) 2023.11.10
1020 TIL  (0) 2023.10.20
[Algorithm] Algorithm 특성  (0) 2023.07.20