설계 문제를 해결하기 위한 방법

�˰������� ���� ���

�˰����� : ����ȣ, ������, 1995. Page 227-253

�Ǹ��� �˰����� �߿��� ������ �ذ��ϴ� ����� ����ȭ�� ��ũ�п� �־ �������� ���� �˰������� ���� �ִ�. ������� �� ���İ� �պ� ������ ���� ����� �Ǵ� �����Ͱ� ��� �ִ� �迭�� �� ���� ������ �� �迭�� ���� ������ ��, �׵� �� �迭�� �����Ѵٴ� ������ �������� ���� �ִ�. �̷��� �⺻���� ��ũ���� �˰������� ���� ����̶�� �θ���. ���α׷��Ӵ� �ذ��ؾ� �� ���ο� ������ ������ �� ������ �˰����� ���� ����� ������ �� �ִ��� ����� �����ϴ� ���� ���ο� �˰����� ���߿� �ʿ��� �ð��� ��� ���� �� �ִٴ� ������ �ſ� �߿��ϴ�. �� �������� ���⼭�� �� ���� �˰����� ���� ����� �Ұ��ϱ�� �Ѵ�.

1. ���� ��ġ��

ȿ���� ���� �˰������� �����ϴ� ������μ� ���� �θ� ���ǰ� �ִ� ����߿� ���� ��ġ�� (divide-and-conquer) �̶�� ���� �ִµ�, ���� ��ġ�������� �ذ��Ϸ��� �ϴ� ���� (ũ�⸦ n �̶�� �Ѵ�) �� ũ�Ⱑ ���� ���� ���� ���� �κ� ������ �����Ѵ�. ��, �� �� ũ�Ⱑ ���� �κ� ������ ���� �����κ��� ������ ������ ���� �ش��� ���� ���� �� �ְ� ������ �ʿ䰡 �ִ�. �� ����� ���ؼ��� �պ� ���İ� 2 �� Ž���� �� �� ���� ���� ���� ���ݱ��� ���캸�Ҵ�.

�켱 ������ �����ϸ� ��� ���� ȿ���� �ִ����� ���� ���� ���캸��� ����.

Ź�� ��ȸ�� ��� ���� Ź���� �� �ϴ� ����� ���� ���ϴ� ����� ���Ϸ��� �Ѵ�. �Ƿ��� ���� ����� �׻� �̱�ٰ� ���� �� �� �� ������ �ϸ� �Ǵ°��� ����ϴ� ���� �����̴�.

���⼭ Ź�� ��ȸ ���� �ο��� n ���̶�� ����. �� ������ �ذ��ϱ� ���ؼ� ������ ���ÿ� �Ϲ������� ���� �̿��ϴ� ����ʸ�Ʈ������ �̿��ϴµ�, ù ��° ��ʸ�Ʈ������ ���� ���� ����� �����ϰ�, �� �������� ������ n - 1�� �߿��� ���������� ��ʸ�Ʈ���� �̿��ؼ� ���� ���� ����� ���ϴ� ����� �̿��ϱ�� ���� (�׸� 1). �׸� 1 ���� ���� ���� ���տ��� �̱� ����� ��Ÿ����, × ǥ�ð� �ִ� ���� �� ����� ��Ÿ����.

설계 문제를 해결하기 위한 방법

�׸� 1  Ź�� ��ȸ

�׸� 1 �� ���� ����� �̿��ϴ� ��쿡�� �ѹ� ������ �� ������ �� ����� ��󿡼� ���ܵǹǷ�, n �� �߿��� ���� ���� ����� ���ϱ� ���ؼ��� n - 1 �� ������ �ϰ� �ȴ�. ���� �� ������� �ʿ��� ���ռ��� T1 (n) �̶�� �ϸ�,

        

설계 문제를 해결하기 위한 방법

 �� �ȴ�.

�׷���, ���ݸ� ������ ������ ���� �׸� 1 �� ���� ����� �̿��ϴ� ��쿡�� ���ʿ��� ������ ���� �Ѵٴ� ���� �ݹ� �� �� �ִ�. ù ��° ��ʸ�Ʈ���� �̱� ��� (�� n / 2 ��) �� �ڱⰡ �̱� ��뺸�ٴ� ���ϴٴ� ���� �˰� �����Ƿ� ���� ���� �ǽ��ϴ� ��ʸ�Ʈ���� ������ �ʿ䰡 ����. �� ��° ��ʸ�Ʈ���� ù ��° ��ʸ�Ʈ���� �ѹ��� �̱��� ���ϰ� �� ������� ��Ƽ� �ǽ��ϸ� �ǹǷ�, �� ��° ��ʸ�Ʈ�� �����ϴ� ������� k ��� �ϸ� �� ��° ��ʸ�Ʈ���� ��ϱ� ���ؼ��� k - 1 �� ������ �ϸ� �ȴ�.
�� ������� ��⸦ �� ���� ���ռ��� ������ ���ؼ���
k �� ���ؾ� �ϴµ�, �̸� ���ؼ��� ù ��° ��ʸ�Ʈ���� ��ü������ ��� ���ϴ����� ������ �ȴ�. �� �� ���⵵ ����ڿ��� �ٸ� ����� ���ʷ� �� ����� �����ϴ� ����� ���Ѵٰ� �ϰ�, ���⵵ ����ڰ� ��ο��� �̱�� k �� ���� n - 1 �� �ȴ�. ����, �� ����� �̿��ϴ��� �׸� 1 �� ����� ���� 2n - 3 �� ������ �ؾ� �Ѵ� (�׸� 2).

설계 문제를 해결하기 위한 방법

�׸� 2  ��ɷ����� ��� �

�׷��� n ���� ���� �ݾ� ������ ù ��° ��ʸ�Ʈ�� �ϰ� �ϸ� k �� ���� n / 2 �� �ȴ� (�׸� 3).

설계 문제를 해결하기 위한 방법

�׸� 3  �ɷ��� ���� ��� �

�� �� ����� �����ϰ� �ϱ� ���� n�� ¦���� �ϰ�, �� ����� ���ռ��� T2(n) ���� �ϸ�,

        

설계 문제를 해결하기 위한 방법

�� �Ǿ�, �׸� 1 �� ������ٵ� n / 2 - 1 ���̳� ���ռ��� ��������.

�׷���, �̹����� �� �ٸ� ����� ������ ����� ����.

�켱 ��ü�� ������ ������ �� ������ ���ε��� �ְ��ڿ� �־��ڸ� ������ ��, �� ���� �����ڳ��� ������ �ϰ� �ؼ� ��ü�� �ְ��ڸ� ���ϰ�, �־��ڳ��� ������ �ϰ� �ؼ� �־��ڸ� ���ϸ� �ȴ� (�׸� 4).

설계 문제를 해결하기 위한 방법

�׸� 4  ���ҿ� ���� �ְ����־��� ����

�� ����� �̿��� ����� ���ռ��� T3(n) ���� �ϸ�,

        

설계 문제를 해결하기 위한 방법

�� �ȴ�. ��, �и���

        

설계 문제를 해결하기 위한 방법

�̴�. �� �� ���� �̿��ϸ� �� n �� ���� ������ ���� �Ǵµ�, ����� �����ϰ� �ϱ� ���� n = 2p ��� �Ѵ�.

        

설계 문제를 해결하기 위한 방법

        

설계 문제를 해결하기 위한 방법

        

설계 문제를 해결하기 위한 방법

        

설계 문제를 해결하기 위한 방법

        

설계 문제를 해결하기 위한 방법

�̰��� n �� ���� �Ϲݽ����� ��Ÿ����,

       

설계 문제를 해결하기 위한 방법

                        

설계 문제를 해결하기 위한 방법

                        

설계 문제를 해결하기 위한 방법

�� �ȴ�.

���⼭ ������ ������ ��� (�׸� 4 �� ���) ������ �켱 ��ü�� ������ ������ (����) ������ ���� ������ ���� ������ �ذ��ϰ� �������� ������ ó���� �ؼ� ��ü�� ���� �ش��� ���Ѵ� (����). �̿� ���� ��ü�� �����ؼ� ������ ���ε��� ó���ϰ� �������� �����ϴ� ����� ������ ��ġ�����̶�� �Ѵ� (�׸� 5).

설계 문제를 해결하기 위한 방법

�׸� 5  ���� ��ġ���� ����

설계 문제를 해결하기 위한 방법

�׸� 6  �ϳ��� ž ������ �ʱ� ����

���� ��ġ���� �� �ϳ��� ���μ� �ϳ����� ž�̶�� ������ �����ϱ�� ����.

�׸� 6 �� ���� �� ���� ���� A, B, C �� �ִµ�, ó������ A ��� ���뿡 ���� ���� ������ ũ������� ��, ��� ������ ������ ������ �׺��� ���� ������ �ְ� �Ʒ����� �׺��� ū ������ ������ �ִ�. �� ������ ������ ������ ���뿡�� ����� �ѹ��� �ϳ��� �̵��ؼ� ��� ������ ���� B �� �ű�� ���̴�. ��, ��� ��쿡�� ���� ���� ������ ū ������ �� �� ����.
�� ������ ������ ���� �ܼ��� �˰��������� �ذ��� �� �ִٴ� ���� �� �� �ִ�. ���밡 �ﰢ���� ���·� ��ġ�Ǿ� �ִٰ� �ϰ� Ȧ�� ��°���� ���� ���� ������ �ð� �������� �ϳ��� �̵��ϰ�, ¦�� ��°���� ���� ���� ������ ������ ������ ���� �߿��� �̵��� �� �ִ� �͸��� �ϳ� �̵��Ѵ�.
�� �˰������� �����ϰ� ���������� �� ���������� �ݹ� �˱�� ������� ������ ���� ���� ��ġ���� �̿��ϸ� ���缺�� �ݹ� ������ �� ���� ���̴�.

���� n ���� A ���� B �� �̵��ϴ� ������ ũ�Ⱑ n - 1 �� �� ���� �κ� ������ ������ ���̶�� ������ �� �ִ�. �켱 n - 1���� ������ ���� A ���� ���� C �� �ű�� ���� A �� �ִ� n ��° ���� ���� (���� ū ����) �� �ű� �� �ִ� ���°� �ǹǷ� �� ������ A ���� B �� �ű��.
�׸��� ����,
n - 1 ���� ������ ���� C���� B�� �̵��Ѵ�. n-1���� ������ �ű�� ���ؼ��� �� ����� ��������� ����ϸ� �Ǵµ�, ���⼭ �̵��ϴ� n - 1 ���� ������ �ٸ� ��� ���Ǻ��ٵ� �����Ƿ� �̵��� ���� ���� A, B, C �� ���� ���κп��� ��� ������ �ִ����� ������ �ʿ䰡 ����. ������ ���� ���� ������ ��� �̵��ϴ����� �˱� ��ư�, ��� ȣ���� �ݺ��ǹǷ� �̰��� �ϳ��ϳ� üũ�ϱ�� ��������, �� �˰������� ���̵��� �����ϱ� ���� �����ϴٴ� ���� �����ϴ� �͵� ���� ����. �Ϲ������� �̿� ���� ���� ��ġ���� �̿��� �˰������� �׷��� ���� �˰����򺸴� ȿ���� ����.
���� ��ġ���� �̿��ؼ� �˰������� ������ ������ ������ �����ϴ� ��� �� �� �κ� ������ ���� ���� ���ս�Ű�� ����� �����ؾ� �Ѵ�. Ư�� �κ� ������ �信�� ��ü�� ������ ���� ���� ���� �����ϰ� ������� ������ �� ����� ����� �� ���� ���̶�� �����ؾ� �Ѵ�. ������ ���ҹ��� �˰������� ���ɿ� ������ ��ġ�� ������ �߿��Ѵ�, ��κ��� ��� ������ �յ��� ũ��� �����ϴ� ���� �ٶ����ϴ�.

�κ� ������ �ذ��ϱ� ���ؼ��� ���� ���ν����� ��������� ȣ���ϴ� ���� �����ϰ�, �� ��� ȣ���� �����ͼ��� 1 �� �� ���� ���� ������ ���� �и��ϰ� �Ǵ� �������� �����ϰ� �ȴ�.

2. ������

�տ��� ������ ���� ��ġ���� �������� ��� ������ ������ ũ�Ⱑ ���� �κ� ������ �����ߴµ�, ���� �˰������� �����ϱ� ���� �⺻���� ��ħ �߿� �κй����� ũ�Ⱑ �յ��ؾ� �Ѵٴ� ���� �ִ�. �̰��� �����ϱ� ���ؼ� ������ ���� ����ؼ� ������ ������ ���� �ʴ� ũ�⸦ ���� �κ� ������ ������ ����� ���� ũ��� ������ ����� ���� ����. �� ������ ����ȭ�� ��ȿ�ϴٴ� ���� ���� ��ġ������ ������ ���̶�� �����ؼ��� �ȵȴ�.

n ���� ������ ������ �����͸� ũ�Ⱑ ���� ������ �����ϴ� ������ ������ ����. �� ������ �ذ��ϱ� ���� ���� �ܼ��� ���Ĺ��� �����Ϳ��� �տ������� ���ʴ�� �����ؼ� ���� ���� ��Ҹ� ã�Ƴ� ��, ���� ���ʿ� �ִ� �����Ϳ� ��ȯ�ϰ�, �� �������� ���� ���ʿ� �ִ� �����͸� ������ �����Ϳ��� �տ������� ���ʴ�� �����Ͽ� ���� ���� ��Ҹ� ã�Ƴ� ��, ���ʿ��� �� ��°�� �ִ� �����Ϳ� ��ȯ�ϴ� ���� �ݺ��ϴ� ���̴�. �� ������ ������ �����Ϳ� ���ؼ��� �ݺ� ���������ν� n ���� �����Ϳ� ���� ������ �� �� �ִ�.

�� �˰����� ���� ���ĵǴ� ��� ���̿��� �������� �� Ƚ���� ���� ����. ���� ���� �����͸� ���ϱ� ���ؼ��� n - 1 �� �񱳸� �ؾ� �ϰ�, �� ��° ���� �����͸� ���ϱ� ���ؼ��� n - 2 ��, �� ���� �����͸� ���ϱ� ���ؼ��� n - 3 ���� ���ؾ� �Ѵ�. ��ü �� Ƚ���� �̵��� ���ϸ� �ǹǷ�,

        

설계 문제를 해결하기 위한 방법

�� �Ǿ� O(

설계 문제를 해결하기 위한 방법
) �� �ȴ�.

�� ���� �˰������� ũ�Ⱑ �ٸ� �κ� ������ �����ϴ� ���� ��ġ���� ��������� ������ ���̶�� �� ���� ������ ũ�� n�� ���ؼ��� ȿ���� ���� �����Ƿ� ���������� ȿ���� ���� ���� �˰������� �����ϱ� ���ؼ��� �κ� ������ ũ�⸦ �յ�ȭ�ؾ� �Ѵ�. ũ�Ⱑ n �� ������ ũ�� 1 �� ũ�� n - 1 �� �� �κ� ������ �������� �ʰ�, ������ ũ�Ⱑ ���� ���� �� ���� ������ �����ؾ� �ϴµ�, �̰��� �տ��� �̹� ������ �պ� �����̶�� ���� �˰����򿡼� �̿�ǰ� �ִ�.

�պ� ���Ŀ� ���ؼ��� �̹� ���������Ƿ� �˰����� ���� ������ ���������� �̹� ������ �ٿ� ���� �� �˰������� ���⵵�� O(n log n) �̴�.

�̿� ���� �κ� ������ ũ�⸦ �յ��ϰ� �����ν� �ξ� ȿ���� ���� �˰������� ���� �� �ְ� �ȴ�.

3. ���� ��ȹ��

������� ����� ������ ������ �κ� ������ ������ �� �ְ�, �κ� ������ ũ���� ���� ���� ������ �� �ִ� ��쿡 ��ȿ�ϴ�. �׷���, ũ�Ⱑ n�� ������ �ܼ��� �����ؼ� �� �κ� ������ ũ�Ⱑ ������ ���� �ʴ� ������ ���ҵǾ��� ������ ����� �˰������� ���⵵�� �Ƹ� ���� �Լ������� ������ ���̴�. �̷� ��쿡�� ������ ��ȹ�����̶�� ����� �̿��ϸ� ȿ������ �˰������� ������ �� �ִ�.
������ ũ�Ⱑ ���� �κ� ������ ������ �� �κ� ������ ���� ���� ���ϱ� ���� ���� �κ� ������ �� ���̰� �ݺ��ؼ� �ذ��� �ʿ䰡 �ִ� ��찡 �ִ�. �� ������ �ѹ� �ذ��� �κ� ������ �ش��� ��ǥ���� ����� �ξ��ٰ� �ʿ��� ���� �� ǥ�� �����ϰ� �ϸ� ���� ����ϴµ� �ɸ��� �ð��� ������ �� �ְ� �Ǿ� ȿ���� ���� �˰������� ���� ���� �ִ�.
�̿� ���� ��쿡 ���󼭴� �������� �ذ��ϰ� �� ��� �κ� ������ �ش��� ǥ�� �صδ� ���� ���α׷��� �ۼ��ϱ� ���� ��쵵 �ִ�. � �κ� ������ ������ ��ü�� ���� �ذ� �������� �ʿ��ϰ� �Ǵ��� ����� �������� �ʰ� �ϴ� ǥ�� �ۼ��ϴµ�, �̿� ���� �־��� ������ �ذ��ϱ� ���� �κ� ������ ���� ���� ǥ�� �����ϴ� ����� ���� ��ȹ�� (dynamic programming) �̶�� �Ѵ�. ������ȹ���̶�� �̸��� ���� �̷п��� ���� ���̴�.

���������δ� ���� ��ȹ���� ��� �κ� ������ ���� ���� ����ϴµ�, ����� ũ�Ⱑ ���� �κ� �����κ��� ���� ū �κ� ������ ���� ǥ�� ����ϸ鼭 ���ư���. ���� ��ȹ���� ������ �ѹ� � �κ� ������ �ذ�Ǹ� ���� ����� �����ν� ���� �� �� �ٽ� ������ �ʴ´ٴ� ���̴�. �� ����� ������ ���� ���� ���� ������ �� ���� ���̴�.

���� ������ ���� n ���� ����� ���ϴ� ������ �����ϱ�� �Ѵ�. ��, �� ���

설계 문제를 해결하기 위한 방법
�� ũ���
설계 문제를 해결하기 위한 방법
��,
설계 문제를 해결하기 위한 방법
���� �Ѵ�.

       

설계 문제를 해결하기 위한 방법

����� ���ϴµ� � �˰������� �̿��ϴ��� ����� �������� ������ M �� ����ϴµ� �ʿ��� ������ �Ѽ��� ������ ��ģ��.

���� ������ �����ϴ� Ƚ������ ���踦 ���� ���� ������ ���� �������� ��� ������ ���� ����� ����.

        

설계 문제를 해결하기 위한 방법

��ȣ�ӿ� �ִ� ���� �� ���

설계 문제를 해결하기 위한 방법
�� ġ���� ��Ÿ����. �Ϲ����� ����� �̿��ϸ� p × q�� ��İ� q × r �� ����� ������ p × q × r ���� ������ �ʿ�� �ϹǷ�, M ��
설계 문제를 해결하기 위한 방법
�� ������ ����ϸ� 125000 ���� ������ �ʿ�������
설계 문제를 해결하기 위한 방법
������ ����ϸ� 2200 ���� �����̸� �ȴ�. �̵� ������� ���캸�� ���� ������ ���� ���� ��ȹ���� �̿��ϸ� �ȴ�.

����� ������ �ʿ��� ������� �ּ�ȭ�ϱ� ���ؼ��� n ���� ����� ���ϴ� ������ ��� üũ�ϸ� ������ �̰��� ������ �ð��� ����� �ʿ�� �Ѵ�. �׷���, ���� ��ȹ���� �̿��ϸ� ���⵵�� O(n3) �Ǿ˰������� ���� ���� �ִµ�, ����� ������ �ϴµ� ������� ���� ���� ����� ã�� ���ؼ��� ���� ��ȹ���� ��� �̿��ϴ����� �����ϱ�� �Ѵ�.

mi, j�� mi × Mi+1 × �� × Mj �� ����ϴµ� �ɸ��� �ð� �߿��� ���� ���� �ð��̶� �ϰ�, �̰��� ������ ��Ÿ���� ������ ����.

        

설계 문제를 해결하기 위한 방법

���� �Ŀ��� ù ��° ���� mi, k �� M' = Mi × Mi+1 × �� × Mk�� ����ϴµ� �ɸ��� �ð� �߿��� ���� ���� �ð��� ��Ÿ����, �� ��° ���� mk+1, j �� M�� = Mk+1 × Mk+2 × �� × Mj �� ����ϴµ� �ɸ��� �ð� �߿��� ���� ���� �ð��� ��Ÿ����. ��, M�� �� ri-1 × rk �� ���, M�� �� rk × rj �� ����̴�. mi, j �� ��� k(i  ��  k  �� j - 1) �� ���� �̵� �� ���� ���� ���� ���� ���� ���̶�� ���� ��Ÿ����.
�� ���� ��ȹ���� ���� ��������� ÷���� ���� ���� ���� ������ m
i, j �� ����� ����. ��, ��� i �� ���� mi, i �� ����ϴ� �Ϳ������� �����ؼ� mi, i+1 �� mi, i+2 ������ ����Ѵ�.

M = M1 × M2 × M3 × M4 �� ����ϴµ� �� �˰������� �����ϱ�� �Ѵ�. ��, r0, r1, r2, r3, r4�� 10, 20, 50, 1, 100 �̰� mi, j �� ���� ����� ����� ������ ����. ����, ������ �ϴµ� �ʿ��� �ּ��� ������� 2200 �� �ȴ�.
 

m1, 1 = 0

m2, 2 = 0

m3, 3 = 0

m4, 4 = 0

m1, 2 = 10000

m2, 3 = 1000

m3, 4 = 5000

m1, 3 = 1200

m2, 4 = 3000

m1, 4 = 2200

���� ��ȹ���� ���� ���ϳ��� ���μ� �ٰ����� �ﰢ������ �����ϴ� �ּһﰢ�� ���� ������ �����ϱ�� �Ѵ�.

�ﰢ�� ���� ������ �ٰ����� ������ �� �������� �Ÿ��� �־��� ���� ��, ���� �������� �ʴ� �� ���� ���̿� ���� ��(arc)�� �׾ �ٰ��� ��ü�� �ﰢ������ �����ϴ� ���̴�. �ﰢ�� ���� ���� �߿��� �ﰢ������ �����ϱ� ���� ������ ���� ���̿� �׾��� ���� ������ ���� �ּ�ȭ�ϴ� ������ �ּһﰢ������ �����ϱ� ���� ������ ���� ���̿� �׾��� ���� ������ ���� �ּ�ȭ�ϴ� ������ �ּһﰢ�� ���� ������� �Ѵ�.

설계 문제를 해결하기 위한 방법

�׸� 7  7 ������ �ﰢ�� ������ ��

설계 문제를 해결하기 위한 방법

�׸� 8  �ﰢ�� ������ ��

�׸� 7 �� 7 ������ �� ������ ���� (x, y) ��ǥ�� ��Ÿ���µ� �Ÿ� �Լ��� �Ϲ����� ��Ŭ���� �Ÿ��� �Ѵ�. �׸� 7 ���� �ﰢ�� ������ �� ���� �������� ��Ÿ������ ������� �׸� 8�� ���� �ﰢ�� ������ �����Ƿ� �̰��� �ּһﰢ�� ������ �ƴϴ�. �׸� 7�� ���� ������ �ڽ�Ʈ�� �� (1, 3), (1, 4), (1, 6), (4, 6) �� ������ �հ�
��,

설계 문제를 해결하기 위한 방법
�̰�, �׸� 8 �� ���� ���� �ڽ�Ʈ�� �� (1, 3), (1, 4), (1, 5), (1, 6) �� ������ �հ� ��,
설계 문제를 해결하기 위한 방법
설계 문제를 해결하기 위한 방법
=45.16�̴�.
�� �ﰢ�� ���� ������ ���� ��ȹ���� �����ϱ� ���� �ﰢ�� ������ ������ �� ���� ������ ������ �ΰ�, �׵� ������ �˰����� ���迡 �̿��ϱ�� �Ѵ�. �ٰ������� �ð� ��������
n ���� ���� v1, v2, ��, vn �� �ִٰ� �Ѵ�.

[���� 1]  �� ���� �̻����� ������ �ٰ����� �ﰢ�� �������� �� �ٰ����� ���� ���� �ִ� �� ������ �ݵ�� �ϳ� �̻��� ���� ���� �ִ�. ���� vi �� vi-1 �� ��� ��� ������ ������ �ʴ´ٰ� �ϸ�, �� (vi, vi-1) �� �����ΰ� �ִ� �������� ��(vi-1, vi) �� (vi+1, vi+2) �ܿ� �ϳ� �̻��� ���� ���Եȴ�. �̷��� �Ǹ� �� ������ �ﰢ���� ���� �ʴ´�.

[���� 2]  � �ﰢ�� ���ҿ��� (vi, vj) �� ���̶�� �ϸ�, (vi, vk) �� (vk, vj) �� ��� �ٰ����� �� Ȥ�� ���� �Ǵ�vk �� ���� �� �����Ѵ�. �׷��� ������ (vi, vj) �� �ﰢ���� �ƴ� ������ �����ΰ� �ִ� ���� �ȴ�.

������ ���� �� ���� ������ �̿��Ͽ� �ּһﰢ�� ���� ������ �ذ��ϴ� �˰������� �����ϱ�� �Ѵ�.

�ּһﰢ�� ������ �ϱ� ���� �켱 �����ϴ� �� ���� v0 �� v1�� �����Ѵ�. ���� ����� �� ������ ������ �ﰢ�� ���ҿ��� �����ϹǷ� �ּ��� �ﰢ�� ���ҿ����� �����Ѵ�. ���� (v1, vk) ��(vk, v0) �� ��� �ﰢ�� ���ҿ����� �� Ȥ�� ���̵Ǵ� ���� vk �� �����Ѵ�. �� ��, ���� ���� k �� �����ϸ� ��� ��쿡 ��� ���� ���� �ﰢ�� ������ �� �� �ִ����� �����ؾ� �ϴµ� n ���� ������ ���� �ٰ����̶�� ��� (n - 2) ���� ������ �����ϴ�.

��� k �� ���ϴ��� �׷� ���� ����� �κ� ������ ���ƾ� �� ���ε�, �׵��� ������ ���� ���� ���� �ִ� �� ������ �մ� ������ �ٰ����� ���� ���� �����Ǵ� �� ���� �ٰ����� �����Ѵ�. ������� ���� v3 �� �����ϸ� �׸� 9�� ��Ÿ���� �� ���� �κ� ������ �����.

설계 문제를 해결하기 위한 방법

�׸� 9  v3 �� ������ ���� �κ� ����

������ �׸� 9(a), (b) �� �ٰ����� ���� �ּһﰢ�� ������ �ؾ� �ϴµ�, �׸� ���ؼ��� �� �����ϴ� �� �������� ������ ���� ��� �����ؾ� �Ѵٰ� ��������. ������� �׸� 9(b) �� �ذ��ϱ� ���ؼ� �� (v0,v3) �� ���� �κ� ������ ���� �׿��� �������� �ﰢ���� ������ �Ѵ�. ���� v4 �� �����ߴٰ� �ϸ� �ﰢ�� (v0, v3, v4) �� �κ� ���� (v0, v4, v5, v6) �� �����, �� �κ� ���� �߿��� ������ �ٰ����� ���� �ϳ� ���̴�. ����, v4 �� �ƴ϶� v5 �� �����ϸ� �κ� ���� (v3, v4, v5) �� (v0, v5, v6) �� ����µ� �� �κ� ������ ���� ���� (v3, v5) �� (v0, v5) ���̴�.

�Ϲ������� ���� vi ���� �����ؼ� �ð� �������� s ���� ���� vi, vi+1, ��, vi+s-1 �� �����Ǵ� �ٰ����� ���� �ּһﰢ�� ������ ���ϴ� ������ ������ vi ���� �����ϴ� ũ�Ⱑ s �� �κ� ��������� �ϰ�, ���� �̸� Si, s ��� ǥ���ϱ�� �Ѵ�. ������� �׸� 9 (a) �� S0, 4 �̰� �׸� 9(b) �� S3, 5 �̴�. Si, s �� �ذ��ϱ� ���ؼ��� ������ �� ��츦 ������ �ʿ䰡 �ִ�.

    (1) ���� vi+s-2 �� �����ؼ� �� (vi, vi+s-1) �� (vi, vi+s-2) �� �� (vi+s-2, vi+s-1) �� �ﰢ���� �����Ͽ� �κ� ���� Si, s-1 �� �ذ��Ѵ�.

    (2) ���� vi+1 �� �����ؼ� �� (vi, vi+s-1), (vi+1, vi+s-1) �� �� (vi, vi+1) �� �ﰢ���� �����Ͽ� �κ� ���� Si+1, s-1 �� �ذ��Ѵ�.

    (3) ���� vi+k(2 �� k �� s - 3) �� �����ؼ� �� (vi, vi+k), (vi+k, vi+s-1), (vi, vi+s-1) �� �ﰢ���� �����Ͽ� �κ� ���� Si,k+1 �� Si+k, s-k �� �ذ��Ѵ�.

ũ�Ⱑ 3 ������ �κ� ������ �ذ��ϱ� ���ؼ��� �ƹ� �͵� ���� �ʾƵ� �ǹǷ�, (1) ~ (3) �� �̿��ؼ� � k(1 �� k �� s - 2) �� ���ؼ� �κ� ���� Si, k+1 �� Si+k, s-k �� �ذ��ϸ� �Ǵµ�, �κ� ������ ������ �׸� 10 �� ��Ÿ����.

설계 문제를 해결하기 위한 방법

�׸� 10  Si, s �� �κ� ������ ����

ũ�Ⱑ 4 �̻��� �κ� ������ �ذ��ϱ� ���ؼ��� ���� ��Ģ�� �̿��ؼ� ������� ������� �˰������� ����ϱ�� ����. �� ��, ũ�Ⱑ s �̻��� �κ� ������ �ذ��ϱ� ���� ����� ȣ������� ���� ��� 3s-4 ���̶�� ���� ��Ÿ�� �� �����Ƿ�, �ذ��ؾ� �� �κ� ������ ���� s �� ������ �� ���� �ȴ�. ������ ������ ���� ������ ũ��� �� ������� ������ �ذ��ϴµ� �ʿ��� ��� ���ܼ��� ������, �־��� �ٰ����� �������� n �̹Ƿ� ������ ũ��� n �� �������� �ȴ�.

�׷���, ������ ���� �̿ܿ��� �ذ��ؾ� �� �κ� ������ n(n - 4) �����ۿ� ���ٴ� ���� �˰� �ֱ� ������ �� �ؼ��� ����� �̻��ϴٴ� ���� �ݹ� �� �� ���� ���̴�. �� �κ� ������� ���� Si, s(0 �� i < n, 4 �� s(n) �̹Ƿ� ������� ���������� ���� �κ� ������ ���� �� �ذ��Ѵٴ� ���� �и��ϴ�. ������� �׸� 6 ~ 7 ���� �� (v0, v3) �� �����ϰ� �׸� 9(b) �� �κ� �������� v4 �� �����ߴٰ� �ϸ� �κ� ���� S4, 4�� �ذ��ؾ� �Ѵ�. �׷���, ó���� ��(v0, v4) �� �������� ���� ó���� ��(v1, v4) �� �����ؼ� �κ� ���� S4, 5 �� �ذ��� ���� v1 �� v4 �� �������� �ϴ� �ﰢ���� �ϼ���Ű�� ���ؼ� v0 �� �����ص� ���� ���� �κ� ���� v4, 4 �� �ذ��ϰ� �ȴ�.

�̷κ��� �ﰢ�� ���� ������ �ذ��� �� �ִ� ȿ���� ���� ����� ���� ���� �ִ�. ��� i �� s �� ���� Si, s �� �ﰢ�� �����ϴµ� �ɸ��� �ð� (����, �̰��� Ci, s �� ǥ���Ѵ�) �� ����ϴ� ǥ�� ����� ������, �� �� � ������ �ش䵵 ���� ���� ������ �ش信�� �����ϹǷ� �� ǥ�� ũ������� �޿����� �ȴ�. ��, ũ�� S( = 4, 5, ��, n - 1) �� ���� ��� ���� i �� ���� ���� Si, s) �� �ּҰ��� ��ִ´�. ũ�� 0 �� s < 4 �� ������ ������ �θ� ���������� s < 4�� �� Si, s �� �ڽ�Ʈ�� 0 �̶�� ���� �ؾ�� �ȵȴ�.

���⼭ �κ� ������ ���ϱ� ���� Ci, s(S �� 4) �� ����ϴ� ���� ������ ����.

        Ci, s = min{Ci, k+1 + Ci+k, s-k + D(vi, vi+k) + D(vi +k, vi+s-1)}

���⼭ D(vp, vq) �� ���� vp �� vq �� �ٰ����󿡼� �������� ���� ���� �� �� ������ �����ϴ� ���� ���̸� ��Ÿ���� vp �� vq �� �����ϰ� ���� ���� 0 ���� �Ѵ�.

�׸� 7 �� �ִ� �ٰ����� �Ÿ��� ���� �Ͽ� 0 �� i < 6, 4 �� s < 6 �� ���� Ci, s �� ���� ǥ�� ������ ��Ÿ�´µ�, s < 3 �� �࿡ �ִ� ���� ��� 0 �̴�. i = 0 �� ���� s = 7 �� �࿡ C0, 7 �� ���� ��� �ִµ� �� ���� ���� �࿡ �ִ� �ٸ� ���� ���������� �ٰ��� ��ü�� �ﰢ�� ������ ��Ÿ���� �ִ�. �ֳ��ϸ�, ��(v0, v6) �� ���� ū �ٰ����� ���̶�� �����ؼ� �׸� 7 �� �ִ� �ٰ����� ū �ٰ����� �κ� ������� �����ϸ� �ȴ�. ū �ٰ����� v7 ���� v1 ������ ���̿� ���� ���� �������� ���� ���� ���̴�. s = 7 �� ���� ��� C0, 7 �� ���� ���� ���´�.

7

C0, 7 =

75.43

6

C0, 6 =

53.34

C1, 6 =

55.22

C2, 6 =

57.54

C3, 6 =

59.67

C4, 6 =

59.78

C5, 6 =

59.78

C6, 6 =

63.61

5

C0, 5 =

37.54

C1, 5 =

31.81

C2, 5 =

35.45

C3, 5 =

37.74

C4, 5 =

45.50

C5, 5 =

39.98

C6, 5 =

38.09

4

C0, 4 =

16.16

C1, 4 =

16.16

C2, 4 =

15.65

C3, 4 =

15.65

C4, 4 =

22.09

C5, 4 =

22.09

C6, 4 =

17.8

 s      i=0           1             2             3            4            5          6

���� ��� i = 6 �� ���� S = 5 �� ���� �� 38.09 �� ����ϴ� ����� �����ϱ�� ����. Ci, s �� ���Ŀ� ���� �� �� C6, 5 �� k = 1, 2, 3 �� �����ϴ� �� ���� ���߿��� ���� ���� ���̴�. �� ���� ���̶�� ����,

            C6, 2 + C0, 4 + D(v6,v0) + D(v0,v3)

            C6, 3 + C1, 3 + D(v6,v1) + D(v1,v3)

            C6, 4 + C2, 2 + D(v6,v2) + D(v2,v3)

�̴�. ��꿡 �ʿ��� �Ÿ��� ������ ��ǥ�κ��� ������ ���� ��������.

            D(v2, v3) = D(v6, v0) = 0

(�̵��� �ٰ����� ������ ���� �ƴϹǷ� �ڽ�Ʈ�� 0 �̴�).

            D(v6, v2) = 26.08

            D(v1, v3) = 16.16

            D(v6, v1) = 22.36

            D(v0, v3) = 21.93

���� �� ������ ���� ���� 38.09, 38.52, 43.97 �̹Ƿ� �κ� ���� S6, 5 �� �ּҰ��� 38.09 �� �Ǿ���. ��, ���� ���� �ִ� ���� �ּҰ��̹Ƿ� �� ���� ��� ���ؼ��� �κ� ���� S6, 2 �� S0, 4 �� ����ؾ� �Ѵٴ� �� ��, �� (v0, v3) �� �����ؼ� S6, 4 ���� �� (v1, v3) �� �����ϴ� ���� ����.
���� ǥ�� �ּһﰢ�� ������ �ڽ�Ʈ�� ��Ÿ���� ������ �̰����� �ﰢ�� ������ ��� ��ü�� �ݹ� �� �� �ִ� ���� �ƴϴ�. ��
Ci, s �� ���� ���� �Ŀ��� �ּҰ��� ���� k �� ���� �� �ʿ䰡 �ִµ�, �̰��� �˸� ��ӿ� �� (vi, vi+k) �� (vi+k, vi+s-1) �� ���Եȴٴ� ���� �� �� �ִ�(��, k = 1 �� k = s - 2 �� ���� ������ ���� ���� �ʴ´�). �̿��� ���� Si, k+1 �� Si+k, s-k �� �信�� ����µ� ǥ�� �ִ� �� ��Ҹ� ����� ���� �������� �ٰŰ� �Ǵ� k �� ���� ����� �θ� ������ �ȴ�.

�׸� 6 ~ 7 �� �ִ� �ٰ����� ���� �ּһﰢ�� ������ �׸� 6 ~ 11 �� ��Ÿ����.

���� ǥ���� �׸� 6 ~ 7 �� ���� ��ü�� ���� ��Ÿ���� �ִ� ��� C0, 7 �� k = 5 �� ���� ����Ƿ� ���� S0, 7`�� S0, 6 �� S5, 2 �� ��������. S0, 6 �� 6 ���� ���� v0,v1,��,v5 �� ���� ���������� S5, 2 �� �ڽ�Ʈ 0 �� ������ �����̴�. ���� �ڽ�Ʈ 22.09 �� �� (v0,v5) �� ����ϰ� �Ǿ� ������ S0, 6 �� �ذ��ؾ� �Ѵ�.

C0, 6 �� �ּҰ��� k = 2 �� �׿��� ����Ƿ� ���� S0, 6 �� S0, 3 �� S2, 4 �� ����������. S0, 3 �� �ﰢ�� v0,v1,v2 �̰� S2, 4 �� �簢�� v2,v3, v4,v5 �̴�. ���⼭, S0, 3 �� �ذ��� �ʿ�� ������ S2, 4 �� �ذ��ؾ� �ϰ� ���⼭ �� (v0,v2) �� (v2,v5) �� �ڽ�Ʈ 17.89 �� 19.08 �� ��������. C2, 4 �� �ּҰ��� k = 1 �� ���� ����Ƿ� �κ� ���� S2, 2 �� S3, 3 �� ��������� ��� �ʵ� �������� 3 �����̹Ƿ� �ڽ�Ʈ�� 0 �� �ȴ�. ���⼭ �� (v3, v5) �� ���ԵǴµ� �� ���� �ڽ�Ʈ�� 15.65 �̴�.

4. Ž���

���� ��ġ���� �˰������� �������μ��� �ణ Ư���� �����μ� �̰��� ��Ȳ�� �� �ľǵ� �κ��� ���������ν� ������ �ش信 ��������ٴ� ����̴�. �̷� ��Ŀ����� �ش信 ������ ���� ����� ���� �ɷ��� �������⵵ �ϰ� �������⵵ �Ѵ�. ������� ���� Ž���� 2�� Ž���� ��ǥ�� �ϴ� ���ڵ忡 ��� ������ ���ΰ��� �ٸ��� ������ ȿ���� ū ���̰� ����µ�, ���� Ž�������� ���ڵ忡 �� �߾� �����ϰ�, 2 �� Ž�������� n / 2, n / 4, n / 8, �� �� ������ ����ϰ� �����Ѵ�.

�ش信 �����ϴ� ����� �������� ���� ������ �ִµ� �̵��� �з��ϴ� ���� ������� �Ϲ����� ������ ���� �˷��� �ִ�. Ž��� (greedy algorithm) �� ���߿��� ���� �ܼ��� ������ ������ ��Ȳ���� ���������� ���� ���� ���� ��츦 ���ؼ� ���ư��µ�, �׿��� ��츦 ���������ν� �ɷ��� ����� ����� �� �ִ�. ������� �տ��� ������ Dijkstra �˰������ Prim �˰������� ���� ���� �ִ� ������ �̿��ؼ� ���̰� ���� ª�� ��� �Ǵ� ���� ���ϱ� ������ Ž����� �˰��������� �з��ȴ�.

Ž����� �������� �������� �������� �������� ���� ���� ������ �뱹���� �������� ������ ���� ���� �����̶�� ������ ���ٴ� ���̴�. �� ������ ���Ϳ� �ޱ��ؼ� ū ������ ��ĥ ����� �ִ�. �׷��� ������ ���󼭴� �������� �ּ��� �뱹���� �ּ��� ��ġ�ϴ� ��찡 �ִµ� �׷��� ��쿡�� �ſ� ��ȿ�� ����̴�. ������ ������ �� ���� �˰������� ��� �뱹���� �����ظ� �� ������� ���� �� �ִٴ� ���� ���� �̹� ������ ����̴�.

Ž��������� �׻� �뱹���� ���������� �����ظ� ���� �� �ִٰ��� �� �� ���µ�, �λ��� ���������� ����ɡ��̶� ���� ������ ���� ����� ������ �𸣳� ��ü�μ��� ���� ����� �ʷ������� �𸥴�. ���μ� Dijkstra �˰������ Kruskal �˰����򿡼� ���� ���԰� ���� ��찡 ���� ���� ��� �Ǵ����� ����� ����. ���� ���Ը� ���� ���� �����ϴ� ��쿡�� Kruskal �� �ּҸ� �˰����򿡴� ������ �����Ƿ� �ּҸ��� ����� ���� �� ������, Dijkstra �˰������� ��쿡 ���� �ִ� ��θ� ������ ���ϴ� ��찡 �ִ�.

설계 문제를 해결하기 위한 방법

�׸� 12  ���� ���Ը� ���� �׷���

������� �׸� 12 �� ���� �׷��������� b �� c ���̿� ���� ���Ը� ���� ���� �ִ�. ������� s �� �ؼ� Dijkstra �˰������� �����ϸ� �켱 a ������ ���̰� 1 �� �ִ� ��θ� ���ϰ� �ȴ�. ������ s �� a ���� b �� c �� ���ϴ� ������ �����ϹǷ� b �� s �� ���� �����ٰ� �����Ѵ�. �� ���ִ� ��Ρ��� s �� a �� b �� ���̴� 3 �̴�. �� �Ŀ� s ���� c ���� �ִ� ����� ���̰� 1 �̶�� ���� �˰� �ȴ�.
�׷���
c �� ���ϱ� ���� b �� ������ ����ɸ����������� ���� �þ߿��� ���� �߸��� ���̴�. s �� a �� c �� b ��� ����� ���̴� 2 �̹Ƿ� b �� �ִ� �Ÿ��� 3 �̶�� ���� �߸��Ǿ���.

������ ���󼭴� �����ظ� ���ϴ� Ž�� �˰������� �������� ������ ������ ����� Ȯ���� �����ؿ� ����� ���� ���ϴ� Ž�� �˰������� �����ϴ� ��찡 �ִ�. �밳�� �����غ��ٵ� �� �ۼ�Ʈ ���� �ڽ�Ʈ�� Ŀ�� �������. �̿� ���� ��� �����ؿ� ����� ���� ���ϴ� ���� ���� ����� Ž�� �˰������� �Ǵ� ��쵵 ����. ��� ��츦 �������� ������ �����ذ� �������� �ʴ� ������� Ž�� �˰������ �׿��� �߰����� ����� ����ؼ� (�����ذ� �ƴ����� ������), �����ؿ� ����� ���� ���ϴ� ���� ���� �������̴�.
�����ظ� ���ϱ� ���ؼ��� ��� ���ɼ��� �����ؾ� �ϴµ�, �׷��� �Ǹ� �Է��� ũ�⸦ ������ �ϴ� �ð��� �ɸ��ٴ� ������ ���� (��ȸ ������� ����) �� �Ұ��ϱ�� ����.

��ȸ ������� ���� (traveling salesman problem, ���� ��TSP����� �Ѵ�) �� ���� ���԰� �Ҵ�� ������ �׷������� ���� �Ҵ�� ������ ���� ���� ���� ��� (��� ������ �� �ѹ��� �����ϴ� ���) �� ���ϴ� �����̴�. �̷��� ��θ� �ع��� ���(hamilton cycle) ��� �Ѵ�.

�׸� 13 �� ��ȸ ������� ������ �� ���� ��Ÿ�´µ� �� �׷������� ������ 6�� �ִ�. �� ������ ��ǥ�� �־��� �����Ƿ� ���� ���̸� �� ���� ���Զ�� �Ѵ�. TSP ������ �Ϲ������� ����� �Ǵ� �׷����� ��� �� ���� ���̿� ���� �����ϴ� ���� �׷������ �����ϴµ�, ���� ���԰� ��Ŭ������ �Ÿ��� �ƴ� �Ϲ����� ��쿡�� �������� �ʴ� ���� ���԰� ���� ���� �����ϸ� �ȴ�.

설계 문제를 해결하기 위한 방법

�׸� 13 ��ȸ ������� ������ ��

�׸� 13 �� �ִ� 6 ���ø� ��ȸ�ϴ� �� ���� ����� ���� �׸� 14 �� ��Ÿ����. �׵� �� ����� ���̴� 52.13, 49.73, 48.39, 49.78 �� �׸� 6 ~ 14 �� ��Ÿ�� ��� �߿��� (c) �� ���� ª��.

설계 문제를 해결하기 위한 방법

�׸� 14  ����� ��

TSP ���� �ǿ����� ������ �� ���� �ִµ�, �̸��� ��Ÿ���� �ٿ� ���� �������� ������ �湮�ϰ� ���� ������� �ǵ��ƿ��� �ڽ��� ���ϴµ� ����� �� �ִ�. ������� ���� ��޺ΰ� �ٴϴ� �ڽ��� TSP �� ����ؼ� ���� �� �ִµ� �� ��� �� ������ ��ü���� ��Ҹ� ��Ÿ���� ���� �ڽ�Ʈ�� �� �������� �̵� �ð��� ��Ÿ����.
TSP �� ���� Ž�� �˰��������μ��� kruskal �˰������� ������ ������ �� �ִ�. Kruskal �˰������ ���������� �켱 ���� ª�� ���� �����Ѵ�. Kruskal �˰����򿡼��� �����Ϸ��� ���� �߰��ϴ��� ��ΰ� �������� �ʴ� ���� �ϳ��� Ȯ���ߴ�. TSP�� ��쿡�� �����Ϸ��� ���� �߰����� ��,

    (1) ���� (degree: ������ ����� ���� ��) �� 3 �̻��� ������ ���� �ʰ�,

    (2) ��ΰ� �������� �ʴ� (��, ������ ���� ���� �־��� ������ �������� ���� ���� ����) ���� Ȯ���Ѵ�.

���� �� ���� ������ �̿��ؼ� ���ʴ�� ���� �����ϸ� ���� ����Ǿ� ���� ���� ��ΰ� ���� �� �����ǰ�, ������ ���ܿ��� ���� �ϳ��� ��ΰ� ������ ��ΰ� �ȴ�.
�������, �׸� 13 ������ �� (
d, e) �� ���� 3 ���� ���� ª���Ƿ� �켱 �̰��� �����Ѵ�. ������ ���̰� 5 �� �� (b, c), (a, b), (e, f) �� �����ϴµ� �̵��� ������ �ƹ����� ����. �� �� �� ������ �����ϰ� �����Ƿ� Ž�� ����� ����ϸ� �� ���� ��� Ȯ���ؾ� �Ѵ�. �׸��� ���� ���� �� �߿��� ���� ª�� ���� (a, c) �� �� ���� ���̴� 7.08 �̴�. �׷��� �� (a, c) �� (a, b) �� (b, c) �� �Բ� ��θ� �����ϹǷ� Ȯ���� �� ����. ���������� ������ �� (d, f) �� ������. ������ �� (b, e) �� ���������� �� ���� �߰��ϸ� b �� e �� ġ���� 3�� �Ǿ� �����Ƿ� ���ݱ��� ������ ���� ���ص� ��ΰ� ���� �ʱ� ������ Ȯ���� �� ����. ���������� (b, d) �� ������. ������ (c, d) �� �����ϸ� a �� b �� c �� d �� e �� f ��� �ϳ��� ��ΰ� �����Ǵµ�, �� ��ο� ���������� (a, f) �� �����ؼ� �߰��ϸ� �׸� 15 �� ���� ��ΰ� �ϼ��ȴ�.

설계 문제를 해결하기 위한 방법

�׸� 15  ��ȸ ������� ������ ��

5. ��Ʈ��ŷ��

� ������ �����ظ� ���Ϸ��� ������ ��� ���ɼ��� �������� �ʰ��� �����ظ� ���� �� ���� ��찡 �ִ�. ���⼭�� ��� ���ɼ��� �������̰��� ȿ�������� ������ �� �ִ� ����� ��Ʈ��ŷ�� (backtracking) �� �Ұ��ϱ�� �Ѵ�.

���� �� (game tree) �� �� ���� �� ���� ������ ������ ���·� ���� ��ǻ�Ϳ� ����ų ���� ����. �������, ������� �ٵϿ����� ����� ���� �ʹ� ���Ƽ� �̵��� ���� ����ؼ� �Ѳ����� ��ǻ�Ϳ� ����Ű�� ���� �Ұ����ϱ� �����̴�. �׷���, �̵� ������ ������ �ſ� ��Ģ���̴�. ��, �ϳ��� ���� (������ ���, ����, ������ ���� ��Ÿ����) ���� ��� �������� ���� ���� �ִ°��� ���� ���� ��Ģ�� ���� ��Ȯ�ϰ� ������ �����Ƿ� ������ ����� ���鼭 ���縦 �� ���� �ִ�.
���⼭�� ��Ʈ��ŷ�� �����ϱ� ���� 3���̶�� ������ �̿��ϱ�� �Ѵ�. 3���̶� ������ �� ����� �׸� 16 �� ���� �簢���� �ٵϵ��� ����� ���Ƽ� �� ���� ���� ���� ������ ���� ���� ����� �̱�� �����̴�. �׸� 16 ���� �� ĭ�� ������ ��ȣ�� �� ĭ�� �����ϱ� ���ؼ� �ٿ� ���� �ĺ����̴�.

��

��

��

��

��

��

��

��

��

�׸� 16  3 ���� �ʱ� ����

�׸� 16 �� ���� ���� �ٵϵ��� ���� �ʱ� ���¿��� ����ؼ� ������ ���� ��Ȳ�� ���� ���� �ϳ��� ��θ� ���� ����. ������ ��������� ���� ĭ�� �Ҵ�� ��ȣ�� ���� �������� ��� �ִ� ���� ����� ��� ���� ���´�. �� ����� ���� �׸� 17(a) �� ���� Ȥ�� ���� ó���� ���� ���� ���� �ΰ�, ���� �� ������ ���� ���� �ξ�� �ϰ� ��°���� ���� �¸��ϰ� �ȴ�.
�̰��� �ϳ��� ���� (trial) �� ������ �ʴ´�. �̷��� �ϸ� ���� ���ϰ� �ǹǷ� ���� �̱� �� �ִ� ��츦 ���캸�� ���� �鿡 �־ �ٸ� ����� ����� ����� ����. �̸� ����, ��� E �� �����ƿͼ���(�̰��� ��Ʈ�� (backtrack) �̶�� �Ѵ�) �ٽ� ������ ���� �׸� 17(b) �� ���� E ���� F�� �� ���ư� ���� �ְ�, ���� G��, H, I �� �����ϸ� ���� ���� �̱�� �ȴ�.

설계 문제를 해결하기 위한 방법

�׸� 17  ����� ����

�׷��� ���� �� ��Ʈ���ؼ� �ٽ� ����� ����. G�� ���� ��Ʈ���ϸ� �ٸ� ��θ� �߰��ϰ� �Ǵµ� (�׸� 17 (c)), ���� ��θ� ���ؼ� ���ư��� ��� �� �ִ�.

�̷��� ������� �������� ������ �Ϻκи��� ����ؼ� ���� �� �ִµ�, ��ó�� �������� ǥ�鿡�� ��Ÿ���� �ʴ� ������ �ϸ��� ���� (implicit tree) ����� �Ѵ�. �Ϲ��� ������ �׸� 18 �� ���� (�Ϻκ��̱� ������) ���̰� �׸��� ����� ���� ����� �ݹ� �� �� �ִ�. �׸� 18 ���� �Ʒ��� ���ϴ� ���� ���� ������ ��Ÿ����, ���� ���ϴ� ���� ��Ʈ���� ��Ÿ����, ������ ���� �ܰ迡���� ���� ������� �ʴ� ��θ� ��Ÿ����.

설계 문제를 해결하기 위한 방법

�׸� 18  E �� ��Ʈ�� �ϴ� ����

�׸� 18 ���� ���� ���� �����󿡼��� ���� ��ȣ������ �ø��ų� ���̸鼭 (��Ʈ��) �� ��쿡 ������ ���̴�. ��������� �ܰ迡�� ��� F ������ ���� �¸��ϰ�, ��� G�� ������ ���ٴ� ���� �� �� �ִ�. ���� ��� F�ǿ����� ���� �̱�°��� �˾ƺ��� ���� ����ؼ� ��Ʈ���� ������ ����ϸ� ��� E ������ ���� �¸��Ѵٴ� ���� �˰� �ǰ�, ���������δ� �ʱ� ���� (�׸� 14 R) ������ ���ٴ� ���� �˰� �� ���̴�.
���⼭ �߿��� ���� �ϳ��� ��θ� ������ ���� �ű⿡ ��Ÿ���� ��츸�� ����� �θ� �ȴٴ� ���̴�. ���� �������� ���� ���� ������ ������ ����̾����� ��Ʈ��ŷ�� ���� ������ ��ο� ���Ե��� �ʴ� ���� �ؾ� ������ �ȴ�. �̿� ���� �����ν� ������ ������ ����� �� �����ٴ� �ξ� ���� ��� �뷮���� ��ü�� ��� ������ ���� �ִ�.

�̷��� �����硹�� �ɷ������� ���ϱ� ���ؼ��� �������� �ʾƵ� �Ǵ� �κ��� ���� ��󿡼� �����ϸ� �Ǵµ�, ���� ����� �����ϴ� ������� �� - �� �� ���Ŷ�� ���� ������ ���⼭�� �����ϱ�� �Ѵ�.

6. �ٻ��ع�

�ذ��Ϸ��� �������� ũ�Ⱑ �ٸ��Ƿ� �Ѹ���δ� ���� �� ������ ���⵵�� O(n)�̳� O(n log n) �Ǵ� O(n3) ��� ���� ������ ũ�� n �� ���� ������ �Ǵ� �������� ������ ���⵵�� ���� �˰������̶�� ������ ��밡���ϴ�. ��5����� ������ �˰������� �� ������ ���ϴ� ��ȿ�����Ρ��˰������̾����� ������ ���󼭴� �̷��� ȿ������ �˰������� ���� ��쵵 ���� �ִ�.

�̿� ���� ȿ������ �˰������� �߰ߵ��� ���� ������������ ���ؼ� �̷����� ������ �̿��Ͽ� �� ����� ������ �˾Ƴ����� ������ ���������� ���� ��������. ȿ������ �˰������� �߰��� ���� ���ϱ� ������, �� ������ ���ؼ��� ȿ������ �˰������� �������� �ʴ´ٴ� ���� �����ϴ� ������ �ϴ� ���� �翬�ϴ�.

�̷��� �̷����� ������ ���⵵ �̷� (complexity  theory) �̶�� �Ѵ�. �˰����� ���� ������ ���⵵ �̷п� ���� �߻����� �Ͱ� ���ݱ��� ������ �˰����� ������ ��ǥ���� �������̰� ��ü���� ������ ���� �� �ִ�.

���⵵ �̷п����� ������ �� ����� ������ ���� �з��ϴ� ���� �ֿ� ���� �׸��̴�. ���⼭�� �� �з��� ���ؼ� �˷��� �ִ� ��ǰ� �ذ���� �ʴ� �������� ������ �Ұ��ϱ�� �Ѵ�. �̵� ������ ������ ȿ������ �˰������� �����Ѵٴ� �������� ���� ���谡 ����. �׷��� ���������� ����� ������ ���ؼ� ȿ������ �˰������� �����Ϸ��� �ʿ���� ����� ���� �ʰ� �ϰ� �ٸ� ���⿡�� ������ �ذ��ϴ� ��ȸ�� �����Ѵٴ� �ұ����� ȿ���� �ִ�.

���⵵ �̷п����� ���⵵�� ������ ũ�� n �� ���׽����� �򰡵Ǵ� �˰������� ȿ���� (efficient) �˰������̶�� �ϰ�, �ݴ�� n �� ���׽��� �ƴ� ���� �Լ��� ���·� �򰡵Ǵ� �˰������� ��ȿ���� (non-efficient) �˰������̶�� �Ѵ�. ���׽İ� ���� �Լ��� ���̿� ��ġ�ϴ� �˰����� (O(nlog n) �� ���� ���⵵�� ���� �˰�����) �� ���ؼ��� ���� ����� ������ �ǰ� ���� �ʴ� �����̴�.
ȿ������ �˰������� �����ϴ� ������ ���� ���� (tractable problem) ��� �ϰ� ȿ������ �˰������� �������� �ʴ� ������ ����� ���� (intractable problem) ��� �Ѵ�.

���� ������ ����� ������ ������ ������ ��� ��츦 �����ؾ� �ϴ� �Ϳ� �ִ�. �� ��� ��츦 �����ؾ� �ϴ� ������ ����� ������� �ϰ� �׷��� ���� ������ ���� ������� �Ѵ�. ������ ���ٴ� ���� �����ϱ� ���ؼ��� ȿ������ �˰������� �����ϸ� �װ����� ������ �ȴ�. �ݴ�� ��ƴٴ� ���� �����ϱ� ���ؼ��� � �˰������� �̿��ϴ��� �� ������ ȿ�������� �ذ��� �� ���ٴ� ���� ������ �ʿ䰡 �ֱ� ������ �״��� ���������� �ʴ�. ��ƴٴ� ���� �����Ǿ� �ִ� ������ �� ���� ������ �� ���� ���� �ʴ�. �̿� ���� ���׽� �ð��� �˰������� �������� �ʴ´ٴ� ���� �˷��� �ִ� ������ �� ������ ���� ȿ������ �˰������� �����Ϸ��� �� �� �ʿ���� ����� ���� �ʰ� ó������ ������ �� �ִ� ����� �����µ� ������ �ǹǷ� �̷��� �ǹ̿����� �ٷ�� ����.

�׷���, �̺��� �ٷ�� ����� ���� ������ ��������� (���ݱ���) �˷��� ���� �ʴ� �����̴�. �̵� �������� ȿ������ �˰������� �˷��� ���� ���� �Ӹ� �ƴ϶� ���׽� �ð��� �˰������� �������� �ʴ´ٴ� �͵� �����Ǿ� ���� �ʴ�. �׸��� �����ε� ����� ���� �Ϸ��� �ϸ� �ݹ� �̵� ������ �ε����ٰ� �ص� ������ �ƴ� ������ �̷� ������ �ſ� ���� �����Ѵ�. �̿� ���� �������� NP ���� ���� (NP-complete problem) ��� �Ѵ�.

�Ϲ����� �˰����򿡼��� �� ���ܿ��� � ������ �Ѵٴ� ���� ��Ȯ�ϰ� �������� ����Ǿ� �����Ƿ� �����͸� �Է��ϸ� � ������ � ������ �Ѵٴ� ���� �� �� �ִ�. �̷��� �˰������� Ư�� ������ �˰����� (deterministic algorithm) �̶�� �θ���. ������ �˰����� ���� ���׽� �ð��� �ذ��� �� �ִ� ������ ��� Ŭ���� P(class P) �� ���ϴ� ������� �Ѵ�.

�̿� ���ؼ� NP ��� �ϴ� ���� ������� �˰����� (nondeterministic algorithm) �� �̿��ϸ� ���׽� �ð��� �ذ��� �� �ִ� ���� �ǹ��Ѵ�. ������� �˰������̶� ������ ���ܿ��� ���� �� �ִ� ��ΰ� ���� ���� ������ �־ �� �߿��� ������ ��θ� ���ؼ� ������ ������ ���̴�. ��θ� ���Ѵٰ� �ϴ��� if ���� ���� ���� �б�� ���� ��� ��θ� ������ ���ΰ��� ���� ������ �־��� �ִ� ���� �ƴϴ�. �ƹ�ư ��� ��ε��� �ϳ��� ��θ� ���ؼ� ������ ������ ������ ���ۿ� ����. �׸��� �̵� ��� �� ���� ������ ��θ� �� ������ ���� ���׽� �ð����� ���� ã�Ƴ��� ������ ������ Ŭ���� NP (class NP) �̴�.

�׷���, ���� ���� ��θ� ���ϸ� ���׽� �ð����� �ذ��� �� �ִٰ��� �ϴ��� �׷� ��θ� �� ���� �� �ִٴ� ���嵵 ����. ��� ��θ� ���ϸ� �������� �� �� �ִ� ����� �����Ƿ� �߸��� ��θ� ���ϸ� ���� �ð��� �ʿ�� ������ �𸣰� ���� ã�Ƴ��� �������� �𸥴�.

�� ������ ���׽� �ð��� �ذ��� �� �ִ� ���� ��� ��θ� ���ϸ� �������� �� �� �ִ� ���� ���� (god)�����̴�. ���� �ƴ� ����̳� ��ǻ�ͷμ��� ��� ��θ� ���ؼ� ������ ������ ������ ������ �ǵ��ƿ��� �� ��� ����� ����� �����ؼ� ���ư��� ���� ������ ����� ���ۿ� ����. ��, ������� �˰������� ������ �Ϲ����� ������ �˰��������� ����ؼ� �ذ��ϴ� ���̴�.

�̷��� ��������ν� ���⵵�� ������ �ٲ��. �������, �� ���ܿ��� �� ���� �б��Ѵٰ� �ϸ� ������ ������� �˰������� ��� n ���ܿ� �ذ��� �� �ִ� ������ O(2n) ������ ���⵵�� �ʿ�� �Ѵٰ� ������ �� �ִ�.

�̻��� �������� ũ���� NP �� ���ϴ� ������ ������ ���׽� �ð��� �ذ��� �� �ִٰ� �ܾ��� �� ���ٴ� ���� ������ �� ���� ���̴�.

������ �˰����� ���� ���׽� �ð��� �ذ��� �� �ִ� ������ ������� �˰����� ���ؼ��� ���׽� �ð��� �ذ��� �� �����Ƿ� P �� NP �� �����Ѵ�. �׷��� NP �� P �� NP �� ���ϴ� � ������ ���׽� �ð��� �ذ��� �� �ִٸ� P = NP �� �����Ѵ�. �̰��� ������� �ƴϸ� P = NP ��, ���׽Ľð��� �ذ��� �� �ִ� �˰������� �������� �ʴ� ������ NP �ӿ� �ִ����� �빮���̴�. �� ������ P = NP ������� �Ҹ��� �����μ� ��ǻ�� ���� �о߿����� �ִ��� ���� �� �ϳ��̴�.

���� �����ڴ� P �� NP ��, NP �ӿ��� ȿ�������� �ذ��� �� ���� ������ �ִٰ� �ϰ� �ִ�. �̰��� ȿ������ �˰������� ������ �Ͱ��� ���� ������ NP �ӿ� ���� �����Ѵٴ� ���� ��������� �׷��� �����ϰ� ������ �˰��������� �ٲ� �� �ִٰ��� �������� �ʴ´ٴ� ���� ���� �����̴�. �׷��� ���� ������ ���� �ʴ� ��Ȳ�̴�. �׷��� ���� ������ ���� �ʴ� ��Ȳ�̴�.

NP-hard ������ NP �� ���ϴ� � �������ٵ� ��ưų� ���� ������ ����� ������ ���Ѵ�.

NP ���� �Ǵ� NP-hard ������ ���ؼ� ���� �˷��� �ִ� �˰������� ���⵵�� �־��� ��� �Է� ũ�⿡ ���� ���� �Լ��� �ȴ�. �׷��� NP-hard ��� ���� �˷��� �ִ� ����ȭ ������ ���ؼ� ���ϴ� ���� �ݵ�� �����ذ� �ƴ϶�� �ϴ��� �����ؿ� ����� ���̸� �ȴ�. �׷��� ���� ����� �������� �ð��� ���׽� �����ϴٸ� O(n) �Ǵ� O(n2) ������ �ϴ� ���� �ٶ����ϸ� �ǿ������δ� �̰����� ����� ��찡 �ִ�. �̿� ���� �����ؿ� ����� ���� �ٻ��ض�� �ϰ� �װ��� ���ϴ� (������) �˰������� �ٻ� �˰����� (approximation algorithm) �̶�� �Ѵ�.

�ٻ� �˰������� ���ϴ� ô���δ� �Ϲ����� �˰������ ���������� �ð� ���⵵�� ���� ���⵵ �̿ܿ� �� �˰����򿡼� ������� ���� �����ؿ� ��� ���� ������ ���ϴ� ���е� (accuracy) ��� ���� �ִ�. ���� ���е��� ���⵵�鿡�� ��� �پ �˰������� ������ ���� �ٶ���������, �׷��� ���� ��쿡�� ���е��� ������ ȿ���� ���� ���� �˰������ ȿ���� ������ ���е��� ���� �˰������� ������ ��Ȳ�� ���� �� ������ ����� �ʿ䰡 �ִ�.

���⼭ �ٷ���� �ϴ� ������ ��ȸ ������� ������ ������ ���� ������ �߰��� �����̴� (���� x �� y �� �����ϴ� ���� ���� (����) �� dxy ��� ǥ���Ѵ�.)

    (1) �׷����� �ִ� �� ���� ���̴� 0�̻�

    (2) �׷����� �ִ� ������ �� ���� A, B, C �� ���ؼ�, dAB + dBC �� dAC

ù ��° ������ ������ �� �������� �ٸ� ������ �湮���� ��, ������ ���� �پ� ��� ���� ���ٴ� ���� �ǹ��Ѵ�. �׸���, �� ��° ������ ���� A ���� ���� C �� �湮�� �� ���� B �� ���ؼ� ���� �ͺ��ٵ� ���� ���� ���� ���ٴ� ���� �ǹ��Ѵ�. �� ���� �ﰢ �ε����̶�� �Ѵ�.

�̵� �� ������ ������ ������ �����ϴ� ��Ȳ�� �����ϸ� �ſ� �ڿ������� �����̴�. �̵� ������ �߰����� ���� ��ȸ ������� ������ ��Ŭ������ ��ȸ ������� ���� (Euclidean traveling salesman problem) ��� �Ѵ�. ���⼭�� �׷����� ���� ���� n �̶�� �ϰ� ���� ������ n(n - 1)/2 ��� �Ѵ�. �� ������ ��쿡�� ��� �� ���� ���̿��� ���� �����Ѵٴ� ���� �����ؾ� �ϴµ�, ���� ���ٴ� ���� dAB = �� ��� �ؼ��� �� ������ �̰��� �� ��° ���ǿ� ��߳���.

���� ������ �ذ��� �� �ִ� ���� �ܼ��� �˰����� (�ܼ� Ž���) �� �Ұ��ϱ�� �Ѵ�.

�켱 ������ �� ���� (u ��� �Ѵ�) �� ���ϰ� ���� u �� ����Ǿ� �ִ� �� �߿��� ���԰� ���� ���� �� ((u, v) ��� �Ѵ�) �� ���ؼ� ���� v �� �̵��Ѵ�. �̹����� ���� v �� ����Ǿ� �ִ� �� �߿��� ���԰� ���� ���� ���� ���ϴµ�, �� �� ���� v ������ �� (v, u) �� ��󿡼� �����Ѵ�. �̿� ���� �� �������� ���԰� ���� ���� �� (�̹� ������ �������� ���ϴ� ���� ����) �� �����ϴ� ������ �ݺ��ؼ� �������� ���� u �� �ǵ��� ���� �Ǹ� �̰��� �ϳ��� ���� �ȴ�.

�׷���, �� ����� ���е��� �״��� ���� ������, ������� ����� ���̰� �־��� ��쿡 �������� O(log n) �質 �Ǵ� ��찡 �ִ�. �׷��� �������� ��ȸ ������� ������ ��쿡�� �̿� ���� �ܼ��� ������ε� ����� ��찡 �ִٴ� ���� �˷��� �ִ�.

������ �� �˰������� ���ϱ�� �Ѵ�.

�� ���������� �� ������ ������ �ִ� ���� �ѹ��� �����ϴµ�, �� �� ���ݱ��� ������ �������� �ǵ��� ���� ���� ������ �� �߿��� ���� ���� ���� ���Ѵ�. �� ������ ������ �ִ� ���� ������ n - 1 �̹Ƿ� ��ü ���⵵�� O(n2) �� �ȴ�.

�̿ܿ��� ���Թ��̶�簡 �ּҸ�� ���� ����� �̿��ϸ� ���е��� ���� ���� ���� �� �ִµ�, �̵� ����� ���ؼ��� �����ϱ�� �ϰ�, ���� ������ ������ �ϱ� �ٶ���.