문제풀이방식-맹목적 탐색 Ai4.

Slides:



Advertisements
Similar presentations
탐색 (Lecture Note #2) 인공지능 이복주 단국대학교 컴퓨터공학과 Modified from the slides
Advertisements

알고리즘 기본 개념 정렬 알고리즘 탐색 알고리즘 알고리즘 복잡도.
컴퓨터와 인터넷.
Maximum Flow.
제14장 동적 메모리.
되추적(Backtracking).
공차 및 끼워맞춤.
연결리스트(linked list).
1-1 일과 일률.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
Error Detection and Correction
컴퓨터과학 전공탐색 배상원.
임베디드 실습 # LED, 7’Segment 제어
보고서 #5(제출기한: 10/14) 다음 문제를 해결하시오.
자료구조: CHAP 7 트리(1) 순천향대학교 컴퓨터공학과 하 상 호.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
프로그래밍 랩 – 7주 리스트.
부분집합의 합 구하기 문제 부분집합의 합 구하기(Sum-of-Subsets) 문제
CHAP 10:그래프 (2) 순천향대학교 하상호.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
JA A V W. 03.
자바 5.0 프로그래밍.
프로그래밍 개요
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
쉽게 배우는 알고리즘 7장. 상호 배타적 집합의 처리.
8장. 상호 배타적 집합의 처리.
24장. 파일 입출력.
TFT-LCD 구조 동작원리 응용분야.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
시뮬레이션 기반 가상 보조기구 알고리즘 최적화
27강 JAVA Collections - II - Map계열 컬렉션 클래스 살펴보기 - Set계열 컬렉션 클래스 살펴보기
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
20 장 네트워킹과 인터네트워킹 장치 20.1 리피터(Repeaters) 20.2 브리지(Bridges)
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
리스트(List)를 이용한 자료 관리 이점숙 /
S-Work 2.0 DRM 신규 버전 설치 가이드 SOFTCAMP
객체기반 SW설계 팀활동지 4.
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
CHAP 12 : 탐색 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 27).
알고리즘 알고리즘이란 무엇인가?.
약식 진리표를 이용한 타당성 증명 진리표 그리기 방법의 한계
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
Chapter 1 단위, 물리량, 벡터.
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
Chapter 10 데이터 검색1.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
발표자 : 이지연 Programming Systems Lab.
부분집합의 합 구하기 문제 부분집합의 합 구하기(Sum-of-Subsets) 문제
Numerical Analysis Programming using NRs
컴퓨터공학과 손민정 Computer Graphics Lab 이승용 교수님
트리 (Logical) Data Structures Linear list Tree Graph Linear structures
컴퓨터 개론 √ 원리를 알면 IT가 맛있다 쉽게 배우는 컴퓨터 기본 원리 한빛미디어 교재출판부.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제 4 장 Record.
수치해석 ch3 환경공학과 김지숙.
 6장. SQL 쿼리.
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
C++ Espresso 제15장 STL 알고리즘.
타이머를 시작하려면 슬라이드 쇼 메뉴에서 쇼 보기를 클릭하십시오.
문제의 표현 Ai3.
Presentation transcript:

문제풀이방식-맹목적 탐색 Ai4

지난 주 상태묘사 : 연산자의 정의 방법 : 그래프를 이용한 상태 공간의 표현 문제의 상태를 컴퓨터 내에서 다룰 수 있는 적절한 자료구조로 표현한 것 연산자의 정의 방법 : 가능한 한 일반화된 변환 규칙을 정의 하는 것이 바람직 그래프를 이용한 상태 공간의 표현 Ai4

이번 주의 학습 내용 그래프 탐색의 개요 탐색 방법의 종류 맹목적 탐색 깊이 우선 탐색 넓이 우선 탐색 균일 비용 탐색 Ai4

상태공간의 그래프 표현 방향성 그래프(directed graph)가 많이 사용 그래프 : 노드의 집합과 노드를 연결하는 아크의 집합으로 구성 Ai4

방향성 그래프 상태 : 노드(node) 연산자 : 아크(arc) 방향성 아크 비용이 결부될 수 있다. 아크는 어느 한 노드로 부터 다른 노드로 방향이 주어져 있다. 비용이 결부될 수 있다. Ai4

방향성 그래프 Ni  Nj Length Cost 노드 Nj는 노드 Ni의 후계(successor) 노드 Ni는 노드 Nj의 부모(parent) Length ex) 길이가 k인 경로 : Ni0, Ni1, …, Nik Cost C(Ni, Nj) : 노드 Ni로부터 Nj를 향하는 아크 비용 두 노드 사이의 경로에 드는 비용 : 아크 비용 합 Ai4

목적 어떤 노드 S로부터 목표상태를 나타내는 노드들의 집합 {Ti}의 한 노드까지의 경로를 찾는 것 노드의 집합 {Si}의 한 노드로부터 노드의 집합 {Ti}의 한 노드까지의 경로를 찾는 것 Ai4

2 1 8 7 6 3 4 5 2 1 8 7 6 3 4 5 2 1 8 7 6 3 4 5 2 3 1 8 7 6 4 5 1 2 8 7 6 3 4 5 2 8 1 4 7 6 3 5 2 3 1 7 6 4 8 5 1 2 8 7 6 3 4 5 Ai4

탐색을 이용한 문제 풀이 방법 탐색 알고리즘에 대한 고찰 그래프 탐색 탐색을 이용한 문제 풀이 방법 탐색 알고리즘에 대한 고찰 Ai4

그래프 탐색 상태공간에서 목표상태의 탐색: 상태들 간의 의존 관계가 형성 그래프로 표현 초기상태로부터 시작하여 연산자를 이용하여 새로운 차기 상태들을 생성하고, 그 중 적절한 대상을 선택하여 다시 차기상태를 생성시키는 과정을 반복 상태들 간의 의존 관계가 형성 그래프로 표현 Ai4

탐색 과정 주어진 상태에 적용할 수 있는 모든 연사자를 가하여 모든 차기 상태들을 생성 - 후계노드의 집합 생성 후계 노드에는 부모 노드를 가리키는 포인터를 첨부 - 탐색 경로를 알 수 있도록 함 정해진 기준에 따라 다음 노드를 선택 Ai4

Ai4

용어 및 자료 구조 확장 : 어떠한 상태의 모든 후계 상태를 생성하는 것 OPEN : 확장할 노드들를 저장하는 리스트 CLOSED : 이미 확장된 노드들을 저장하는 리스트 Ai4

탐색에 사용되는 정보에 따른 분류 맹목적 탐색 : 경험적 탐색 : 목표 노드의 위치에 관계없이 단순히 미리 정해진 순서에 따라 탐색을 하는 방법 경험적 탐색 : 목표 노드의 위치에 대한 경험적 정보를 사용하여 확장할 노드 선택 경험적 지식 : 시행착오에 따른 경험적 지식으로, 완벽한 것은 아니지만, 많은 경우 유용하게 사용할 수 있는 지식 Ai4

탐색의 목표에 따른 분류 임의 경로 탐색 : 최적 경로 탐색 : 어떤 경로를 거치든 목표 상태에 도달하는 경로를 찾기만 하면 되는 문제 최적 경로 탐색 : 목표상태에 도달하는 최적의 경로를 탐색하는 문제 Ai4

깊이 우선 균일비용 넓이 우선 언덕 오르기 A*알고리즘 최적 우선 목적 정보사용 임의 경로 탐색 최적 경로 탐색 맹목적 탐 색 탐 색 깊이 우선 넓이 우선 균일비용 경험적 탐 색 언덕 오르기 최적 우선 A*알고리즘 Ai4

깊이 우선 방법 Depth-first search OPEN은 스택 구조(LIFO) 백트래킹(backtracking) 최근의 탐색하지 않은 후계노드로 복귀 다른 방향으로의 탐색이 가능한 최근의 상태로 복귀하는 것 Ai4

깊이 우선 탐색 알고리즘 1. 출발 노드를 OPEN에 삽입 2. OPEN에 남은 노드가 있으면 다음 반복 (1) Open의 제일 앞 노드를 꺼내어 Closed에 넣는다. (노드n) (2) n이 깊이 제한에 도달하지 않았다면 a. 노드 n을 확장 b. 생성된 후계 노드들에 노드n을 가리키는 포인터 첨부 c. 후계노드 중 목표노드가 존재하면 포인터를 역추적하여 탐색 경로를 구성(탐색 성공) d. 후계 노드들을 Open의 앞에 넣는다 Ai4

A OPEN A CLOSED Ai4

A B C D OPEN D C B CLOSED A Ai4

A B C D E F OPEN D C E F CLOSED A B Ai4

A B C D E F G H OPEN D C F G H CLOSED A B E Ai4

A B C D E F G H OPEN D C F H CLOSED A B E G Ai4

A B C D E F G H OPEN D C F CLOSED A B E G H Ai4

A B C D E F I J G H OPEN D C J I CLOSED A B E G H F Ai4

8-퍼즐 문제 2 3 1 5 3 8 2 4 7 6 1 8 4 7 6 5 초기상태 목표상태 Ai4

연습 문제 Ai4

2 1 8 7 6 3 4 5 2 1 8 7 6 3 4 5 2 1 8 7 6 3 4 5 ① 2 3 1 8 7 6 4 5 ② 1 2 8 7 6 3 4 5 ④ 2 3 1 7 6 4 8 5 ③ 1 2 8 7 6 3 4 5 ⑤ Ai4

넓이 우선 방법 Breadth-first search 탐색 트리의 한 레벨씩 단계적으로 탐색 최단 길이 경로 탐색 OPEN은 큐 구조(FIFO) Ai4

넓이 우선 탐색 알고리즘 1. 출발 노드를 OPEN에 삽입 2. OPEN에 남은 노드가 있으면 다음 반복 (1) Open의 제일 앞 노드를 꺼내어 Closed에 넣는다. (노드n) (2) 노드 n을 확장 (2) 후계 노드가 생성되었다면 다음을 수행 a. 생성된 후계 노드들에 노드n을 가리키는 포인터 첨부 b. 후계노드 중 목표노드가 존재하면 포인터를 역 추적 하여 탐색 경로를 구성(탐색 성공) d. 후계 노드들을 Open의 뒤에 넣는다 Ai4

A CLOSED OPEN A Ai4

A B C D OPEN B C D CLOSED A Ai4

A B C D E F OPEN C D F E CLOSED A B Ai4

A B C D G E F OPEN D E F G CLOSED A B C Ai4

A B C D H I J E F G OPEN E F G I J H CLOSED A B C D Ai4

A B C D E F G H I J K L OPEN F G H I J L K CLOSED A B C D E Ai4

연습 문제 Ai4

2 1 8 7 6 3 4 5 2 1 8 7 6 3 4 5 2 1 8 7 6 3 4 5 2 3 1 8 7 6 4 5 1 2 8 7 6 3 4 5 2 8 1 4 7 6 3 5 2 3 1 7 6 4 8 5 1 2 8 7 6 3 4 5 Ai4

Review 깊이 우선 탐색 넓이 우선 탐색 넓이 우선 탐색에 비해 적은 메모리 공간을 소비. 우연히 아주 빠르게 풀이 경로를 찾을 수 있다. 넓이 우선 탐색 해가 없는 경로를 불필요하게 깊이 탐색할 필요가 없다. 해가 존재하면 반드시 찾을 수 있고, 그 풀이 경로는 최단 경로이다. Ai4

균일 비용 탐색 Uniform-cost search 출발 노드로부터의 경로비용이 최소인 노드를 선택하여 확장시키는 방법을 사용. Ai4

경로비용의 계산 S N N1 N2 Nm ... g(Ni) = g(N) +C(N,Ni), i=1,2,...,m g(N) C(N,Nm) N1 N2 Nm ... Ai4

경로비용의 계산 최소 비용 경로의 탐색 : g(N)이 최소인 노드N을 우선 선택 g(N) : 출발노드(S)로부터 노드N까지의 최소 경로 비용 C(N,Ni) : 노드N과 후계 노드 Ni 사이의 경로 비용 후계 노드 Ni의 비용은 노드N의 최소 경로 비용에 노드N과 후계 노드 Ni 사이의 경로 비용을 합한 것 g(Ni) = g(N) + C(N, Ni) 최소 비용 경로의 탐색 : g(N)이 최소인 노드N을 우선 선택 Ai4

균일비용 탐색 알고리즘1/2 1. 출발 노드를 OPEN에 삽입(출발 노드의 비용은 0) 1) OPEN의 제일 앞 노드를 꺼내어 CLOSED에 넣는다. (노드n) 2) 노드n이 목표 노드라면 탐색 성공 - 포인터를 역추적하여 탐색 경로를 구성 3) 노드n을 확장하여 후계노드 n1, n2, ..., ni를 생성하고, 부모노드n을 가리키는 포인터 첨부 4) 후계노드 n1, n2, ..., ni의 경로 비용 계산 Ai4

균일비용 탐색 알고리즘2/2 3. 탐색 실패 5) 각각의 후계노드 nj, j=1,...,i에 대하여 1. nj 와 동일한 노드가 OPEN에 존재하면 새로 생성된 노드의 경로 비용이 적을 경우 OPEN의 노드를 대체하고, 그렇지 않으면 무시 2. nj 와 동일한 노드가 CLOSED에 존재하면 새로 생성된 노드 무시 3. nj 와 동일한 노드가 OPEN이나 CLOSED에 존재하지 않으면 OPEN에 첨가 6) OPEN에 저장된 노드들을 경로 비용의 오름차순으로 정렬 3. 탐색 실패 Ai4

문제 풀이 과정의 예 최단 경로 탐색 문제 문제: a~g의 7개의 도시가 있다. 도시 사이에는 도로가 건설되어 있고, 각 도로의 거리는 그림과 같다. 도시a에서 g까지 가는 최단 경로를 찾아라. 상태 : 현재 위치한 도시 연산자 : 각 도시로 이동하라는 지시 Ai4

최단 경로 탐색 문제 6 b e 3 5 8 7 5 g a 2 f 4 c d 3 3 Ai4

a a c d f g b c 5 4 10 12 11 d c e d b e 9 12 7 c g b f 10 14 19 14 g 12 Ai4

Review 경로 비용이 최소인 노드를 선택하여 확장하므로 선택된 노드가 목표 노드이면 그 경로는 최소 비용 경로. 8-퍼즐 문제에서는 조각의 이동 횟수가 비용이며, 따라서 모든 연산자의 적용 비용이 동일하므로 균일 비용 탐색은 넓이 우선 탐색과 동일한 탐색을 하게 된다. Ai4