# 유전 알고리즘 ## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ai/quiz/41) **유전 알고리즘**(Genetic Algorithms, GA)은 **진화적 접근법**에 기반한 AI 기법으로, 주어진 문제에 대한 최적의 해를 찾기 위해 개체군의 진화 과정을 모방합니다. 이 알고리즘은 1975년 [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland)에 의해 제안되었습니다. 유전 알고리즘은 다음과 같은 아이디어에 기반합니다: * 문제의 유효한 해를 **유전자(genes)**로 표현할 수 있다. * **교차(Crossover)**를 통해 두 가지 해를 결합하여 새로운 유효한 해를 얻을 수 있다. * **선택(Selection)**은 특정 **적합도 함수(fitness function)**를 사용하여 더 나은 해를 선택하는 데 사용된다. * **돌연변이(Mutations)**는 최적화 과정을 불안정하게 만들어 지역 최솟값에서 벗어날 수 있도록 한다. 유전 알고리즘을 구현하려면 다음이 필요합니다: * **유전자(genes)** g∈Γ를 사용하여 문제의 해를 코딩하는 방법을 찾아야 합니다. * 유전자 집합 Γ에서 **적합도 함수** fit: Γ→**R**를 정의해야 합니다. 함수 값이 작을수록 더 나은 해를 나타냅니다. * 두 유전자를 결합하여 새로운 유효한 해를 생성하는 **교차 메커니즘** crossover: Γ²→Γ를 정의해야 합니다. * **돌연변이 메커니즘** mutate: Γ→Γ를 정의해야 합니다. 많은 경우, 교차와 돌연변이는 숫자 시퀀스나 비트 벡터와 같은 유전자를 조작하는 간단한 알고리즘으로 구현됩니다. 유전 알고리즘의 구체적인 구현은 상황에 따라 다를 수 있지만, 전체적인 구조는 다음과 같습니다: 1. 초기 개체군 G⊆Γ를 선택합니다. 2. 이 단계에서 수행할 작업(교차 또는 돌연변이)을 무작위로 선택합니다. 3. **교차**: * 두 유전자 g₁, g₂ ∈ G를 무작위로 선택합니다. * 교차를 계산하여 g=crossover(g₁, g₂)를 얻습니다. * fit(g)