0-1 Knapsack – 개선된 BFS 기반 알고리즘

Slides:



Advertisements
Similar presentations
개인의견 차가있을수있음 훈훈한남자 배우 TOP 5. 5 위는 박보검 웃을때보이는 치명적인 미소 꺄 ~~~ 5위5위.
Advertisements

기업 인사담당자가 밝힌 면접 합격 비법 취업포털 사람인 ( 기업 인사담당자 397 명 조사 )
함께하는 바른 아동요리 교육 “ 아요 ” – 쿡플러스 박재남 Page 1. 성동구 청소년 드림쿠킹센터 사업계획 제안 함께하는 바른 아동. 청소년 요리교육 - “ 아요 aYo” 쿡플러스 어린이요리교실 - 박재남 청소년 드림쿠킹센터 사업계획 제안서 청소년.
Ck601-note10. 정수계획법의 필요성  선형계획법은 분할성의 가정을 두고 있다. 즉 모든 결정 변수는 제약조건을 충족하고 음수가 아닌 한 어떠한 값 도 가질 수 있다는 전제를 두고 있다.  항공회사에서 여객기 구매계획을 위한 모형의 최적해가 B747 을 1.
불편함을 해소한 기존 제품들의 리뉴얼 방안 Contents - 컨셉도출 - 상황분석 - 실행방안 - 기대효과.
경북대 바이오 메카트로닉스 사업단 취업캠프 일정표 ㈜커리어 인스티튜트 경력개발팀 엄도용 Tel M.P
DWRR vs CFS in Fairness 최성준 2011년 10월 6일.
朝鲜语视听(一) 辽宁省教育软件大赛参赛作品.
1. 자료구조 개념 (1) 자료구조의 개요 1) 자료구조 ① 일련의 자료들을 조직하고 구조화하는 것 ② 자료의 표현과 그것과 관련된 연산 2) 자료구조에 따라 저장공간의 효율성과 프로그램의 실행시간이 달라짐 3) 어떠한 자료구조에서도 필요한 모든 연산들을 처리하는 것이.
Shortest Path Algorithm
Internet Computing KUT Youn-Hee Han
제 6 장 그래프 6.1 그래프의 정의 6.2 용어 및 표현법 6.3 그래프의 표현 방법 6.4 그래프의 순회와 신장 트리
『대기업-중소협력업체 안전보건 공생협력 프로그램』 추진 사업
자료구조 실습 (03분반)
Internet Computing KUT Youn-Hee Han
5.1.1 CPU-I/O 버스트 주기(CPU-I/O Burst Cycle)
Internet Computing KUT Youn-Hee Han
쉽게 배우는 알고리즘 3장. 정렬Sorting
CHAP 10:그래프 순천향대학교 하상호.
CHAP 10:그래프 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
On the computation of multidimensional Aggregates
 Branch-and-Bound (분기한정)
알고리즘(Algorithm) – Greedy Method (탐욕적 방법)
Chapter 10 그래프(graph) SANGJI University Kwangman KO
제 9 장 우선순위 큐.
그래프(graph) 연결되어 있는 객체 간의 관계를 표현하는 자료구조 가장 일반적인 자료구조 형태
5.1.1 CPU-I/O 버스트 주기(CPU-I/O Burst Cycle)
게임 다운중.....
CHAP 8:우선순위큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
Tree & Heap SANGJI University Kwangman Ko
CHAPTER 6 그래프.
스케줄링 (Scheduling) 시스템 내부시간(time in the system): 스케줄링 문제
배열과 연결리스트 연결리스트 배열 메모리 할당이 연속적이어서 인덱스 사용시 검색이 빠르다.
동적 계획(Dynamic Programming)
Ch.06 Branch-and-Bound (분기한정법) (Ch.05-7 포함)
월 정례조회.
제 7 장 정수계획법 정수계획법의 모형화 정수계획법의 해법 분단탐색법 정수계획법 적용사례.
01 “㈜ITBANK 멀티캠퍼스 소개”.
Homework #5 (1/3) Backtracking, Branch-and-Bound
T-Tree MMDB 강원대학교 컴퓨터 과학과 양 기 운
하드웨어 vs 소프트 웨어 볼 수 있다. 만질 수 있다. 볼 수 없다. 만질 수 없다. 키보드, 마우스 ? 하드웨어
스케줄링 (Scheduling) 시스템 내부시간(time in the system): 스케줄링 문제
게임인공지능 제 5 장 그래프의 비밀 2008년 4월 28일.
CHAP 8:우선순위큐.
나의 포트폴리오 영동대학교 2014.
알고리즘 강의 슬라이드 6 분기한정법 Branch-and-Bound
3장. 탐색.
CHAP 10 : 그래프.
탐색 (Lecture Note #3) 인공지능 이복주 단국대학교 컴퓨터공학과 Modified from the slides
Ch.06 Branch-and-Bound (분기한정법) (Ch.05-7 포함)
스케줄링 (Scheduling) 시스템 내부시간(time in the system): 스케줄링 문제
 Branch-and-Bound (분기한정)
Homework #5 (1/3) Backtracking, Branch-and-Bound
탐색 선형 탐색, 이진 탐색, 이진 탐색 트리.
탐색 (Search) 컴퓨터가 문제를 자율적으로 해결하기 위해 해 혹은 해에 이르기 위한 경로를 찾아가는 과정
속담이나 관용표현 사용하여 글쓰기 다섯째 마당 국어(말듣쓰) 6학년 1학기 마음을 나누며-되돌아보기 9/9 수업 수업 계획
상황별/유형별 고객응대법.
올바른 부모교육으로 육아를 교육하자 해피트리.
부분 2부 합창하기 음악 5학년 1학기 8. 숲 속을 걸어요 (2 /3) 제작의도
CHAP 8:우선순위큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
Traveling Salesman Problem – 개요 (1/2)
자료구조 자료구조의 개요 배열 선형 리스트 스택 큐 트리.
9장. 특징 선택 오일석, 패턴인식, 교보문고, © 오일석, 전북대학교 컴퓨터공학.
LTSystem in Korea since 2011
사라진 삼국 문화재 연역식의 프리젠테이션 구성 마리포사 탐정 회사.
[CPA340] Algorithms and Practice Youn-Hee Han
보고서 #4 (1) (제출기한: 10/6) #1 다음 그래프 G에 대해서 답하시오. (2*5 = 10)
배열, 포인터, 함수 Review & 과제 1, 2.
Traveling Salesman Problem – 개요 (1/2)
Traveling Salesman Problem – 개요 (1/2)
Presentation transcript:

0-1 Knapsack – 개선된 BFS 기반 알고리즘 void breadth_first_branch_and_bound2 (state_space_tree T) { queue_of_node Q; node u, v; number maxprofit; initialize(Q); // Q는 빈 대기열로 초기화 v = root of T; // 루트 노드를 방문 enqueue(Q,v); maxprofit = profit(v); while(!empty(Q)) { dequeue(Q,v); if(bound(v) > maxprofit) //노드가 여전히 유망한 지 점검 for(each child u of v) { // 각 자식 노드를 방문 if(profit(u) > maxprofit && weight < W) maxprofit = profit(u); if(bound(u) > best && weight < W) enqueue(Q,u); }

0-1 Knapsack – 개선된 BFS 기반 상태공간트리 profit weight bound mp = 40 mp = 40 mp = 70 mp = 70 mp = 70 mp = 70 mp = 90 mp = 70 mp = 70 mp = 90 개선된 BFS 알고리즘에서 방문하지 않아도 되는 노드들 mp = 90 mp = 90

0-1 Knapsack –개선된 BFS 기반 큐 Queue에서의 진행모습 (1/4) Queue maxprofit=0 (0,0) $0,0 $115 maxprofit=40 (1,1) $40,2 $115 (1,2) $0,0 $82 (0,0) $0,0 $115 maxprofit=70 (1,2) $0,0 $82 (2,1) $70,7 $115 (2,2) $40,2 $98 (1,1) $40,2 $115 (0,0) $0,0 $115

0-1 Knapsack – 개선된 BFS 기반 큐 Queue에서의 진행모습 (2/4) No! (2,4) $0,0 $60 No! Since $60 < $70 (best) maxprofit=70 (2,1) $70,7 $115 (2,2) $40,2 $98 (2,3) $30,5 $82 (1,2) $0,0 $82 (1,1) $40,2 $115 (0,0) $0,0 $115 (3,1) $120,17 $0 No! Since 17 > 16(=W) maxprofit=70 (2,2) $40,2 $98 (2,3) $30,5 $82 (3,2) $70,7 $80 (2,1) $70,7 $115 (1,2) $0,0 $82 (1,1) $40,2 $115 (0,0) $0,0 $115

0-1 Knapsack – 개선된 BFS 기반 큐 Queue에서의 진행모습 (3/4) No! (3,4) $40,2 $50 No! Since $50 < $90 (best) maxprofit=90 (2,3) $30,5 $82 (3,2) $70,7 $80 (3,3) $90,12 $98 (2,2) $40,2 $98 (2,1) $70,7 $115 (1,2) $0,0 $82 (1,1) $40,2 $115 (0,0) $0,0 $115 maxprofit=90 (3,3) $90,12 $98 No Branching Since $82 < $90 (best) $80 < $90 (best) (3,2) $70,7 $80 (2,3) $30,5 $82 (2,2) $40,2 $98 (2,1) $70,7 $115 (1,2) $0,0 $82 (1,1) $40,2 $115 (0,0) $0,0 $115

0-1 Knapsack – 개선된 BFS 기반 큐 Queue에서의 진행모습 (4/4) Since 17 > 16(=W) (4,3) $100,17 $0 (4,4) $90,12 $90 Since 17 > 16(=W) $90 = $90 (best) No! maxprofit=90 Empty! (3,3) $90,12 $98 (3,2) $70,7 $80 (2,3) $30,5 $82 (2,2) $40,2 $98 (2,1) $70,7 $115 (1,2) $0,0 $82 (1,1) $40,2 $115 (0,0) $0,0 $115

0-1 Knapsack – 개선된 BFS 기반 알고리즘 분석 불필요한 Branching을 피할 수 있다. 개선된 분기한정 가지치기로 BFS를 하여 상태공간트리를 그려보면, 검색하는 노드의 개수는 13이다. 되추적 알고리즘(DFS 기반 해결책-13개 노드 검색)과 동일 기본적인 BFS 기반 알고리즘 (17개 노드 검색) 보다 좋다.

Best-First-Search (최고우선검색)– Concept 최적의 해답에 더 빨리 도달하기 위한 전략: 1. 주어진 노드의 모든 자식노드를 검색한 후, 2. 유망한 노드인지를 살펴보고, 3. 그 중에서 가장 좋은(최고의) 한계치(bound)를 가진 노드를 우선적으로 확장한다. (일반적으로) 최고우선검색(Best-First Search)을 사용하면, 너비우선검색에 비해서 검색 성능이 좋아짐

Best-First-Search – Strategy 최고의 한계를 가진 노드를 우선적으로 선택하기 위해서 우선순위 대기열(Priority Queue)을 사용한다. Top Priority: bound 값이 가장 큰 노드 우선순위 대기열은 힙(heap)을 사용하여 효과적으로 구현할 수 있다.

Best-FS based Branch-and-Bound Algorithm void best_first_branch_and_bound(state_space_tree T){ priority_queue_of_node PQ; node u, v; number maxprofit; initialize(PQ); //PQ를 빈 대기열로 초기화 v = root of T; maxprofit = profit(v); insert(PQ,v); while(!empty(PQ)) { //최고 한계 값을 가진 노드를 제거 remove(PQ,v); if(bound(v) > maxprofit) //노드가 여전히 유망한 지 점검 for(each child u of v) { if(profit(u) > maxprofit && weight < W) maxprofit = profit(u); if(bound(u) > maxprofit && weight < W) insert(PQ,u); }

0-1 Knapsack – Best-FS 기반 상태공간트리 bound weight profit mp = 40 mp = 70 mp = 90

0-1 Knapsack – Best-FS 기반 우선순위큐 Priority Queue에서의 진행모습 (1/3) Priority Queue maxprofit=0 (0,0) $0,0 $115 maxprofit=40 (1,1) $40,2 $115 (1,2) $0,0 $82 (0,0) $0,0 $115 Priority queue 특성상 (2,1) 노드가 가장 앞에 위치하고 (2,2)가 그 다음에 위치함! (2,1) $70,7 $115 (0,0) $0,0 (2,2) $40,2 $98 (1,1) (1,2) $82 maxprofit=70

0-1 Knapsack – Best-FS 기반 우선순위큐 Priority Queue에서의 진행모습 (2/3) (3,1) $120,17 $0 No! Since 17 > 16(=W) (0,0) $0,0 $115 (1,1) $40,2 (1,2) $82 maxprofit=70 (2,2) $40,2 $98 (3,2) $70,7 $80 (2,1) $70,7 $115 (3,4) $40,2 $50 No! Since $50 < $90 (best) maxprofit=90 (3,3) $90,12 $98 (1,2) $0,0 $82 (3,2) $70,7 $80 Priority queue 특성상 (3,3) 노드가 가장 앞에 위치함! (2,2) $40,2 $98 (2,1) $70,7 $115 (1,1) $40,2 $115 (0,0) $0,0 $115

0-1 Knapsack – Best-FS 기반 우선순위큐 Priority Queue에서의 진행모습 (3/3) (4,1) $100,17 $0 (4,2) $90,12 $90 Since 17 < 16(=W) $90 = $90 (best) No! maxprofit(best)=90 (1,2) $0,0 $82 (3,2) $70,7 $80 (3,3) $90,12 $98 (2,2) $40,2 $98 (2,1) $70,7 $115 (1,1) $40,2 $115 (0,0) $0,0 $115 maxprofit(best)=90 Empty! No Branching Since $82 < $90 (best) $80 < $90 (best) (3,2) $70,7 $80 (1,2) $0,0 $82 (3,3) $90,12 $98 (2,2) $40,2 $98 (2,1) $70,7 $115 (1,1) $40,2 $115 (0,0) $0,0 $115

0-1 Knapsack – Best-FS 기반 분석 분기한정 가지치기로 최고우선검색을 하여 상태공간트리를 그려보면, 검색하는 노드의 개수는 11로서 가장 우수하다. 되추적 알고리즘(DFS 기반 해결책-13개 노드 검색)보다 좋다! BFS 기반 알고리즘 (17개 노드 검색) 보다 좋다. 개선된 BFS 기반 알고리즘 (13개 노드 검색) 보다 좋다.