SlideShare uma empresa Scribd logo
1 de 26
project#3

How fast can we sort?




                        조 : D3
조장 : 2008 고충욱

              조원 : 2009 김시백

                  2011 안영준

                  2011 정진아

                  2011 최보은



                 차 례

1. 프로젝트 설명


2. 일 정

3. 업무분담

4. 초 안

- 알고리즘 및 소스
5. 문제점

6. 해결소스

7. 회의록

1. 프로젝트 설명

과제 1

다음을 정렬하시오

○ 10~ 29 까지 두 자리 정수가 적힌 20 장의 카드가 있다고 하자. 카드를

무작위로

섞었다. 다음 방법을 이용하여 정렬하고 설명에 답하시오, 각 방법을

사용하고 난
후에는 다시 무작위로 섞었다고 하자.
방법 1

⦿ 가장 큰 수가 나올 때까지 찾아서 이 카드를 테이블 위에 앞면이 위로

오도록 놓는다.

처음부터 다시 그 다음 큰 수를 찾아서 그 카드 위에 놓는다. 이 과정을

모든 카드를

찾을 때까지 반복한다. 정렬되었는가?
- 전체 카드를 몇 번 보아야 하는가?

최소 : 20 번 ⇒ 모든 경우에서 찾는 수가 가장 먼저인 경우

최대 : 20!번 ⇒ 모든 경우에서 찾는 수가 가장 마지막인 경우

- 최악의 경우는 어떻게 초기화 되었을 경우인가?

⇒ 가장 큰수가 마지막으로 초기화 되는 경우

- 최선의 경우는 어떻게 초기화 되었을 경우인가?

⇒ 가장 큰수가 처음으로 초기화 되는 경우

- 시간 복잡도는 얼마인가?

⇒ O(n!) = n!, Ω(n) = n
방법 2

⦿ 카드를 두 뭉치로 나눈다. 하나는 첫 수가 1 인 것이고 다른 하나는 첫

수가 2 인 것이다.

각 뭉치를 방법 1 을 사용하여 두 번째 수를 정렬한다. 첫 번째 뭉치를 두

번째 뭉치

위에 놓는다. 정렬되었는가?

- 카드의 비교 수는 얼마인가? 20 + 10! + 10! + 1

20:두 뭉치로 나눈다, 10!:방법 1 을 정렬, 1:첫 수가 1 인지 2 인지 뭉치비교
방법 3

⦿ 카드의 두 번째 수를 이용하여 10 개의 뭉치(0~9)로 나눈다. 이제 두

번째 수가 0 인

뭉치를 집어서 첫 번째 수를 보고 두 뭉치로 나누고 뒤집어 놓는다. 두

번째 수가
1 인 뭉치를 집어서 다시 첫 번째 수를 보고 두 뭉치로 나누어 앞의 뭉치

위에 뒤집어

놓는다. 모든 카드에 대해 반복한다.

- 카드의 비교 횟수는 얼마인가?

최악의 경우 :20 + 55 + 10 + 1

20:10 개의 뭉치(0~9)로 나눈다, 55:최악의 경우로 두 번째 수가 가장 작은

수를 마지막에 집는다, 10:한 뭉치를 첫 번째 수로 비교, 1:첫 수가 1 인지

2 인지 뭉치비교

최선의 경우 :20 + 10 + 10 + 1

20:10 개의 뭉치(0~9)로 나눈다, 55:최악의 경우로 두 번째 수가 가장 작은

수를 집는다. 10:최선의 경우로 두 번째 수가 가장 작은 수를 처음 집는다,

1:첫 수가 1 인지 2 인지 뭉치비교

                두 가지 세기(Counting)의 방법

문제. 원형의 탁자에 5 쌍의 부부가 앉으려고 한다. 이 때,남자와 여자는 교대로 앉아야 하고,

부부는 옆에 나란히 앉을 수 없다고 한다. 그러면 앉을 수 있는 방법은 모두 몇 가지나 되는지

알아보시오.

일상 생활 중에서 우리는 위의 문제와 같은 많은 상황을 만나게 되며, 우리는 이와 같은 문제를

해결하기 위하여 여러 방법의 세기(counting)를 잘 하여야 한다.

일반적으로 세는 방법에 있어서

(1) 순서(order)를 고려하던지 또는 고려하지 않던지;

(2) 반복(repetition)을 허락하던지 또는 허락하지 않던지
등을 고려하여 여러 조건 하에서 선택이나 분포를 counting 하는 것은 중요한 문제이며 ,

지금부터 차례대로 알아보기로 합시다.

예제 1. 개인사물함에 두 자로 된 명찰을 붙여서 구분 하려고 한다. 한글 `가, 나, 다, ... , 파, 하 `

의 14 자

중에서 한 글자와 수자 `0, 1, 2, ... , 8, 9`의 열 개중 한 수자를 사용하려고 한다.       이 때 사물함을

구별할 수 있는 명찰을 몇 개 만들 수 있는지 알아보시오.

풀이. 사물함의 명찰의 모양은

                        한글 : 수자    (예를 들면, 가 3 )

                        수자 : 한글    (예를 들면,    4 라 )

의 경우가 가능하므로,

한글 : 수자 의 경우는 14 x 10 = 140 (가지)

수자 : 한글 의 경우는 10 x 14 = 140 (가지)

따라서, 구별할 수 있는 사물함의 명찰의 개수는 모두 140 + 140 = 280 (개) 이다.

위 예제 1 에서 알 수 있듯이, k 개의 가능성이 있는 일이 독립적으로 시행될 수 있고, 또 각각의

경우의 수가 m1, m2, ..., mk 일 때, 가능한 전체의 경우의 수는 모두


                        이다. 이것을 합의 법칙 (the addition principle)이라고 한다.

각각의 경우의 수가 m1, m2, ..., mi 인 연속된 일을 시행할 때, 가능한 전체의 경우의 수는 모두


                      이다. 이것을 곱의 법칙 (the multiplication principle)이라고 한다.

 이 두 가지 법칙은 모든 경우의 세기 문제에 있어서 가장 기본적인 법칙이다.

예제 2. 15 명의 회원을 가진 어떤 모임이 있다. 이 때, 회장, 부회장, 총무, 감사를 각각

선출하려고 한다.

가능한 경우의 수는 모두 몇 가지인가 ?

풀이. 회장, 부회장, 총무, 감사를 연속하여 선출하여야 하므로, 곱의

법칙에 의하여
15 x 14 x 13 x 12 (가지)

예제 3. 빨간 주사위 R 과 파란 주사위 B 를 동시에 던질 때 나올 수 있는 눈의 경우의 수를

구하여 보시오.

또, 동일한 두 주사위를 던질 때 나올 수 있는 눈의 경우의 수도 구하여 보시오.

풀이.

(1) 빨간 주사위 R 의 눈이 나올 수 있는 경우의 수는 6 가지

 파란 주사위 B 의 눈이 나올 수 있는 경우의 수는 6 가지

따라서 곱의 법칙에 의하여 구하는 경우의 수는 모두

                             6 x 6 = 36 (가지)

이를 구체적으로 구하여 보면, 빨간 주사위 R 과 파란 주사위 B 의 나온 각각 눈을 r, b 라 하고

순서쌍 (r, b)로 표시하면

                   (1,1), (1,2), (1,3), (1,4), (1,5), (1,6)

                   (2,1), (2,2), (2,3), (2,4), (2,5), (2,6)

                                     ...

                   (6,1), (6,2), (6,3), (6,4), (6,5), (6,6)

(2) 동일한 두 주사위를 던지는 경우에 위의 경우에서의 (1,2)와 (2,1)은 구별할 수가 없고, 같은

모양으로 이해되므로 가능한 전체의 경우의 수는 모두

                    1 + 2 + 3 + 4 + 5 + 6 = 21 (가지)

위 예제는 우리가 곧 학습할 중복순열과 중복조합의 전형적인 예로서,


경우 (1)은 중복순열                      이고,



경우 (2)는 중복조합                                   이다.


         순서가 있는 선택의 문제 (Ordered choices)

m 개의 대상으로부터 r 개를 선택할 경우에,
(1) 중복을 허락하는가?

                            (2) 순서를 고려하는가?

를 고려하여 경우의 수를 계산하여야 한다.

S    가   공집합이   아닌   집합일   때,   중복을    허용하고      순서를       고려하여    r   개를   선택한

부분집합을 S 의 r 표본(r-sample)이라 한다.

S 의 원소의 개수를 n 이라 하고, r 표본의 개수를 구하여 봅시다.

    먼저 순서를 고려하므로 r 개의 방을 먼저 순서대로 나열하고

                                 □ □ □ … □

각 방에는 S 의 원소 n 개 중에서 임의로 한 개를 선택할 수 있으므로 곱의 법칙에 의하여

                 n×n×…×n= nr 이며, 이것을 중복순열이라고 부른다

정리 1. S 의 원소의 개수를 n 이라 하면, r 표본의 개수는 n×n×…×n= nr             이다.

예제 1. 운동복에 0 부터 9 까지의 수자를 사용하여 두 자리 수자를 붙이려 한다. 그러면

중복순열의 수이므로, 102= 100 가지의 운동복 번호를 붙일 수 있다. 즉, 00 부터 99 까지 모두

100 가지이다.

문제 2. 26 자의 영어 알파벳 중에서 5 자 사용하여 임의로 낱말 모양을 만들려고 한다. 가능한

낱말은 모두 몇 가지인가?

컴퓨터의 모든 코드는 모두 0 과 1 을 사용하여 표현된다.

이것을 binary code 라고 한다. 0,1 중 한 개로 이루어진 정보를 1 bit 라 하고 8 bit 를 1byte 라고

한다. 이때, 1byte code 의 가능한 경우의 수를 살펴보면 중복순열의 원리의 의하여

                      2 x2 x···x 2 =26 = 64 (가지) 가 가능하다.

개인용 PC 는 정보처리 단위에 따라서 8 bit, 16 bit , 32 bit , 64 bit 등과 같이 한 번에 처리할 수

있는 정보양으로 PC 를 구분하여 부르며, 요즘 Pentium Ⅱ processor 를 갖춘 PC 를 64 bit

운영체제인 PC 라고

부른다.
이 때, 4 byte (32bit) code 의 경우의 수를 알아보면 중복순열의 수에 의한 경우의 수는 모두



                이다. 이 숫자는 앞에서 학습한 Hanoi Tower 문제에서 나온 숫자에 버금가는

                               커다란 수이다.

이제 반복이 허용되지 않고 선택의 수에 대하여 알아 보도록 합시다.

집합 S 의 r-sample 중에서 원소가 모두 다른 것들을 우리는 r-순열 (r- permutation) 이라고

부른다. 또, S 의 원소의 개수가 r 인 경우에 S 의 r-순열은 단순히 순열 (permutation) 이라고

한다.

정리 2. S 의 원소의 개수가 n 일 때, r-순열의 수는




                                               이다.

증명.r-순열은 모두 다른 원소를 r 개 골라서 순서대로 나열하는 방법의 수이므로, 곱의 법칙을

사용하면



                                                     이다.

기호의 약속


(1) n = r              일 때 :

(2) r   = 0 일 때 :   0-순열은 의미가 없다. 그러나 계산의 편의를 위하여    모든 n 에 대하여


                                   로 약속한다.

실제로      n !   은 Gamma 함수로 정의되는 수의 특수한 경우로 이해되는 수로서,       p >0 인

임의의 실수 일 때 함수는 다음과 같이 정의된다 :




                         그러면 모든 p >0                 에 대하여 점화식

가 성립하고, 이 때 특별히 p 가 자연수이면
가 된다. ( 공학수학이나해석학 책을 참조하시오.)

예제 4. 12 명의 회원을 가진 모임에서 서로 다른 직함을 갖는 4 명을 선출하는 방법의 경우의

수는 ?

풀이.




예제 5. 알파벳 A, B, C, D 가 각각 쓰여진 네 장의 카드를 모두 사용하여 만들 수 있는 단어는

모두 몇

가지인가 알아보시오.

풀이.




          순서가 없는 선택의 문제 (Unordered choice)

n 개의 원소를 갖는 집합 S 로 부터 r 개의 서로 다른 원소를 순서를 고려하지 않고 선택한

집합을 S 의

r-조합(r-combination)이라고 하고, r-조합의 수를




                                      과 같이 표기한다.

정리 1.




증명.                       r-순열의 개수는 이고 r 개를 나열하는 방법의 수는 이다.



                                             따라서
예제 1. 12 명의 모임에서 4 명을 임의로 선출 하는 방법의 수는?

풀이.




예제 2. OCU 의 교양과정에는 5 개의 과학 교과목과 4 개의 역사 교과목이 있다. 은지는 이번

학기에 2 개의

과학 교과목과 2 개의 역사 교과목을 선택하려고 한다. 이 때 은지가 선택할 수 있는 과목의

경우의 수는?

풀이.




예제 3. 7 개의 -(dash)와 5 개의 / (slash)를 한 줄에 나열하는 방법은 모두 몇 가지인가

알아보시오.

풀이. 우선 모두 12 개의 방이 나열되어 있다고 생각하고, 그 중 5 개를 순서에 관계없이 골라서

그 방에 / 를 넣는다고 생각하면 된다. 따라서 구하는 경우의 수는 모두



                             이다.

또 위의 문제의 풀이에서 7 개의 방을 골라서 - 를 넣어도 되므로



               가 되며, 이 두 수는 같다. 즉,



일반적으로, 우리는 조합수에 관한 항등식                    을 얻을 수 있다.

예제 4. 영어 단어 MISSISSIPI 의 모든 영어 철자를 사용하여 만들 수 있는 새로운 단어의

개수를 구하여

보시오.
풀이.     영어 단어 MISSISSIPI 는

                                M 이 1개

                                 I 가 4개

                                S 가 4개

                                P 가 2개

이므로 모두 11 자이다. 그러면, 11 개의 방을 나열해 놓고, 먼저 S 를 넣는 방법은




                      다음에 M 을 넣는 방법은 S 를 넣는 방법은 P 를 넣는 방법은이다.



                                          따라서 구하는 방법의 수는 곱의 법칙에

                                  의하여

이와 같은 중복되어 있는 것들에 관한 순열을 중복순열이라고 한다.

일반적으로 다음의 정리가 성립한다.


정리 2.                         전체의 개수가 인 object 를 한 줄에 나열하는 방법의

수는




증명. 위의 예제와 같은 방법으로 생각한다. 즉, n 개의 방이 있을 때, 먼저 n1 개를 고르는 방법은



                  또 ( n-n1)개 가운데서 n2          개를 고르는 방법은

또, 이와 같은 방법으로 우리가 구하는 전체 경우의 수는
따라서, 구하는 전체의 가지 수는                                                 이다.




                       위의     정리   2     에서    가능한      경우의     수를      라   쓰며,

이를 다항계수(multinomial coeffcient) 라고 한다. 특히 k=2 인 경우 다항계수는 앞에서 학습한

조합의 수




                                       과 같다 . (왜냐하면, n = n1 + n2 이므로)

원소의 개수가 n 인 집단으로부터 중복을 허용하여 r 개를 고르는 것을 r-선택 (r-selection)이라

하고, 이를 중복조합이라고 한다. 이 때, r 은 n 보다 커도 무방하다. 또, r-선택 중에서 원소가

모두 다른 것을 우리는 r-조합이라고 부른다.



정리 3                        . 원소의 개수가 n 인 r-선택의 수(중복조합)는         이다.


증명.               집합 S 를      이라 두자.

각각의 r-선택을       r 개의   - 와 (n-1) 개의 / 로 이루어진 수열로 대응 할 수 있다. 예를

들면,    집합 S 가


                                                   일 때,

가 5-선택이라면 이것은 -/--//--/ 와 같다고 생각할 수 있다. 또, s2, s2, s3 는 3-선택으로

이것은 /-/--// 와 같다고 생각한다.

따라서, 우리가 구하는 선택의 수는 정리 3 에 의하여



                                                      이다.

예제 5. 알파벳 26 자를 중복을 허락하여 3 자를 골라서 나열하여 만들 수 있는 단어의 수는 몇

개인가?
풀이                              . 먼저 중복 조합의 수는 순서대로 나열하는 수는

중복순열이므로




                  원순열과 기타 배열의 방법

모든 배열의 경우의 수는 모든 기본적인 수 법칙 , 즉 곱의 법칙과 합의 법칙에 의하여 구할 수

있다.

예제 1. 원판을 꼭 같은 넓이로 100 등분하여 수자 1 부터 100 까지 임의대로 쓰려고 한다. 이 때,

가능한 모든 경우의 수는?

풀이. 일렬로 나열하는 방법은 모두 100! 이다. 그런데 수자가 원형으로 나열되어 있으므로, 한

수자를 임의로 고정시키고 나머지는 일렬로 나열 한다고 생각하면 된다 . 따라서 구하는 경우의

수는 (100-1)! 이다.

위의 예제와 같은 순열을 원순열(circular arrangement)이라고 한다.

어떤 성질을 갖는 object 의 counting 은 전체의 경우에서 그 성질을 object 의 수를 빼어서

계산할 수 있다. 이와 같은 방법을 여사건을 이용하여 counting 하는 방법 이라고 한다.

예제 2. 48 장의 트럼프 카드가 있다. 두 장의 카드를 나누어 줄 때,

(1) 적어도 1 장이 ace 일 경우의 수는?

(2) 두 장이 모두 ace 일 경우의 수는?

(3) 한 장 만이 ace 일 경우의 수는?

풀이.   (1) 곱의 법칙에 의하여 4×3 가지

(2) 여사건을 이용하여 계산한다. 즉, 두 장이 모두 ace 가 아닌 경우의 수는 모두 48 x 47

가지이므로, 구하는 경우의 수는 52×51 - 48×47 = 396

다른방법으로 ace×ace 가 아닌 것 또는 ace 가 아닌 것×ace 인 경우이므로
4 × 48 = 192 48 × 4 = 192

따라서 구하는 전체 경우의 수는 모두 396 가지

(3) (1)에 의하여 396 - 12 = 384 가지

예제 3. 3 명의 남자와 6 명의 여자가 한 줄로 정렬한다. 이 때, 두 남자는 계속하여 줄서지

않는다고 한다.

정렬할 수 있는 가능한 경우의 수는?

풀이. 먼저 여자들이 정렬하는, 방법을 구하면 6! 이다.


      이 때, 여자와 여자 사이의 빈 칸에 남자가 추가되는 것으로 이해하면, 모두 7 칸의 빈 칸

중에서 3 칸을 골라서 나열한 것이므로 따라서 구하는 경우의 수는




예제 4. 1 부터 9 까지의 수자 중에서 연속한 두 수자를 뽑지 않고서 3 개의 수자를 선택하는

방법의 수는?

풀이.   선택한 수를 1, 선택안한 수를 0 으로 표시한다면, 예를 들어 1001010000 은 숫자 1, 4,

6 을 뽑은 것으로 생각 할 수 있다. 따라서, 6 개의 0 이 나열되어 있고 0 사이의 빈칸 7 개

중에서 3 개를 고르면 되므로 구하는 경우의 수는



                                             이다.

출처 : http://web.chungbuk.ac.kr/~wkkim/L51-0005_02_01.html#제 2 절



2. 일 정


  일 정                                          내 용
팀의   팀장을   정하고,   과제에   대해   토의   후   팀원의
12. 4. 11
            임무분담을 정함.


            k-combination 에 대한 과제 2 의 알고리즘을 구하고,
12. 4. 17
            소스의 초안을 완성함.


            과제 2 의 소스 초안을 바탕으로 한 문제점을 토의 후
12. 4. 18
            최종안을 완성함.



12. 4. 19 보고서 작성 후 검토



3. 업무분담
 이 름                      분 담 내 용


고충욱         조장임무 및 자료조사




김시백         보고서작성 및 자료조사




안영준         알고리즘을 바탕으로 한 소스구성
정진아              알고리즘 구성 및 자료조사




    최보은              알고리즘 구성 및 자료조사



4. 초 안

(1) 알고리즘 및 소스


1.문자를 받는다.(숫자를 받을 때마다 n 갯수를 늘리고 마지막 괄호를 닫을 때 n 개수를 계산해서

arc 에 넣는다.)

2.숫자를 받는다.(cnt)

3.순서를 정해두는 변수에 순서를 저장한다(본 코딩에선 sun[])

4.맨 처음은 문자를 순서대로 cnt 만큼 출력한다.

5.마지막이 아닐 경우 (, )를 출력한다.

6.출력문자중        제일     마지막    문자에     해당하는      sun[]의   수를   올린다.(ex:cnt=3   일   경우-

sun[1]sun[2]sun[3]이 sun[1]sun[2]sun[4]가 된다.)

7.문자를 sun[]에 입력받은 대로 cnt 만큼 출력하고 6 번부터 다시 실행한다.

8.만약     sun[현재숫자]이     더    이상    커질     수    없을   때   sun[현재숫자-1]이   한칸을       옮기고

sun[현재숫자]는 sun[현재숫자-1]의 뒤에 두고 다시 7 번으로 간다.

9.마지막까지 갔을 때 종료시킨다.

#include <stdio.h>

int main()

{
char ch[20];

char v;

int cnt;

int arc;

int b;

int m;

int n;

for(;;){

scanf("%c",&v);

if(v=='{' && m==0){

m++;

}

else if(ch[n-1]!=',' && v=='}'){

break;

}

else if(n==21){

break;

}

else if(v!=','){

ch[n]=v;

n++;

}

}

arc=n-1;
b=arc+1;

if(n-1==19){

arc=20;

}

scanf("%d",&cnt);

/*

1. 처음 세 문자를 출력한다.

2. 다음에 마지막 한문자를 뒤로 옮겨서 재 출력한다.

3. 마지막 문자가 마지막에 닿았을때 그 앞순서문자를 뒤로 한칸옮긴다.

4. 마지막 까지 출력을 다하면 끝낸다.

*/

scanf("%d",n);

}



5. 문제점
프로그램에서 원소와 선택하는 방법의 수를 입력하였지만, 이것을 토대로 출력


값이 알맞게 생성되지 않음.



6. 해결소스
#include <stdio.h>

int main()

{

char ch[20];

char v,w;
int sun[20];

int cnt;

int arc;

int in[20];

int x,y,z;

int m=0;

int n=1;

int l;

int a=0,b,c;

for(y=1;y<=20;y++){

sun[y]=y;

}

for(;;){

scanf("%c",&v);

if(v=='{' && m==0){

m++;

}

else if(ch[n-1]!=',' && v=='}'){

break;

}

else if(n==21){

break;

}

else if(v!=','){
ch[n]=v;

n++;

}

}

arc=n-1;

b=arc+1;

if(n-1==19){

arc=20;

}

scanf("%d",&cnt);

for(;;){

for(x=1;x<=cnt;x++){

printf("%c",ch[sun[x]]);

}

b=arc+1;

for(z=cnt;;z--){

sun[z]++;

c=z;

if(a==1){

for(;c<=cnt;c++){

sun[c+1]=sun[c]+1;

a=0;

}

}
if(sun[z]!=b){

break;

}

else{

a++;

b--;

}

if(sun[1]==arc-cnt+2){

break;

}

}

if(sun[1]==arc-cnt+2){

break;

}

printf(", ");

}

scanf("%d",n);

}



7. 회의록
<1 차>

    회의일시 2012 년 04 월 09 일           조      D3   작성자   11 최보은

    참석자          08 고충욱 09 김시백 11 안영준 11 정진아
1. 문제 파악

        2. 업무 분담
회의안건
        3. 앞으로의 계획 설정

        4. 방법 1, 2, 3 논의

                            내 용                   비 고

        -주제 정렬(sorting)에 대해 간단한 토의

        -업무분담

        : 조장 - 고충욱

        보고서 - 김시백

        자료조사 - 정진아, 최보은

        소스코딩 - 안영준
회의내용
        -방법 1, 2, 3 논의

        : 정렬을 사용해 경우의 수 구하기.

        정렬(비교 + 이동), 비교 (비교)

        -다음 시간까지 관련 용어에 대해 숙지.

        -알고리즘 회의

        : 입력형태 - {x,y,z}, 최대 20 개까지 입력

        ~4/17 까지 소스 완성.


<2 차>


회의일시 2012 년 04 월 17 일         조      D3   작성자   11 최보은

 참석자    08 고충욱 09 김시백 11 안영준 11 정진아
1. 자료조사 토의

       2. 알고리즘 문제점 토의
회의안건
       3. 방법 1, 2, 3 논의

       4. 앞으로의 일정 계획


                             내 용                  비 고



       - 자료조사 토의

       : 셈의 원리(합의 법칙, 곱의 법칙)

       중복순열, 중복조합, 순열, 조합

       각각의 정의와 공식 구현방법에 대해 토의

       - 알고리즘 문제점 토의

       : ex) {a,b,c} 2 입력 경우 ab -> ac 넘기는 부분 토의


회의내용 회의 후 ~18 까지 소스 완성

       - 방법 1, 2, 3 논의

       : 셈의 논리(합의 법칙, 곱의 법칙)을 이용해 회의 후 결과

       도출

       - 일정

       : 다음 시간 최종 소스 이해

       최종 보고서 작성

       방법 1, 2, 3 을 완벽히 작성
<3 차>


회의일시 2012 년 04 월 18 일       조     D3   작성자   11 최보은


 참석자    08 고충욱 09 김시백 11 안영준 11 정진아

        1. 용어 공식 정리

        2. 방법 1, 2, 3 정리
회의안건
        3. 최종 소스 이해

        4. 최종 보고서 작성


회의내용                       내 용                 비 고
- 중복조합(서로 다른 n 개에서 중복을 허용하여 r 개를

택하는 조합)공식

: nHr = n+r-1Cr 임을 유도 및 토의

- 방법 1, 2, 3 정리

: 보고서에 넣는 양식으로 마지막 최종 정리

- 최종 소스 이해

: 전 회의의 문제점 해결을 바탕으로 소스 구현, 및 소스

이해

- 최종 보고서 작성

: 기초로 만들어진 보고서를 바탕으로 회의를 통해 보고서

작성

Mais conteúdo relacionado

Destaque

이산치수학 Project5
이산치수학 Project5이산치수학 Project5
이산치수학 Project5KoChungWook
 
Activitat 11
Activitat 11Activitat 11
Activitat 11jgalan33
 
이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7KoChungWook
 
자료구조 Project2
자료구조 Project2자료구조 Project2
자료구조 Project2KoChungWook
 
Tugas praktik bahasa rakitan 2
Tugas praktik bahasa rakitan 2Tugas praktik bahasa rakitan 2
Tugas praktik bahasa rakitan 2Taufik Setiawan
 
Presentatie 26 juni 2012 boven ij ziekenhuis
Presentatie 26 juni 2012 boven ij ziekenhuisPresentatie 26 juni 2012 boven ij ziekenhuis
Presentatie 26 juni 2012 boven ij ziekenhuisrenskepat
 
Universidad fermín toro diapositivas
Universidad fermín toro diapositivasUniversidad fermín toro diapositivas
Universidad fermín toro diapositivasJOSEYENIBORGES
 
자료구조 Project1
자료구조 Project1자료구조 Project1
자료구조 Project1KoChungWook
 
数学之美与浪潮之巅
数学之美与浪潮之巅数学之美与浪潮之巅
数学之美与浪潮之巅wangqunbaidu
 
Social Media to Enable Sales for Natwest Summer Time Talk
Social Media to Enable Sales for Natwest Summer Time TalkSocial Media to Enable Sales for Natwest Summer Time Talk
Social Media to Enable Sales for Natwest Summer Time TalkJane Frankland
 
이산치수학 Project2
이산치수학 Project2이산치수학 Project2
이산치수학 Project2KoChungWook
 
"Getting Creative with Social Media" BlogPaws Presentation
"Getting Creative with Social Media" BlogPaws Presentation"Getting Creative with Social Media" BlogPaws Presentation
"Getting Creative with Social Media" BlogPaws Presentationdogtipper
 
Universidad fermín toro diapositivas
Universidad fermín toro diapositivasUniversidad fermín toro diapositivas
Universidad fermín toro diapositivasJOSEYENIBORGES
 
Make It Happen - AWE Summitt 14 (Zurich)
Make It Happen - AWE Summitt 14 (Zurich)Make It Happen - AWE Summitt 14 (Zurich)
Make It Happen - AWE Summitt 14 (Zurich)Jane Frankland
 
이산치수학 Project6
이산치수학 Project6이산치수학 Project6
이산치수학 Project6KoChungWook
 
이산치수학 Project4
이산치수학 Project4이산치수학 Project4
이산치수학 Project4KoChungWook
 
Geometry Unit Slideshow
Geometry Unit SlideshowGeometry Unit Slideshow
Geometry Unit Slideshowmrsfrasure
 
Story board
Story boardStory board
Story board10ggo
 

Destaque (20)

이산치수학 Project5
이산치수학 Project5이산치수학 Project5
이산치수학 Project5
 
Activitat 11
Activitat 11Activitat 11
Activitat 11
 
이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7
 
자료구조 Project2
자료구조 Project2자료구조 Project2
자료구조 Project2
 
Tugas praktik bahasa rakitan 2
Tugas praktik bahasa rakitan 2Tugas praktik bahasa rakitan 2
Tugas praktik bahasa rakitan 2
 
Presentatie 26 juni 2012 boven ij ziekenhuis
Presentatie 26 juni 2012 boven ij ziekenhuisPresentatie 26 juni 2012 boven ij ziekenhuis
Presentatie 26 juni 2012 boven ij ziekenhuis
 
Universidad fermín toro diapositivas
Universidad fermín toro diapositivasUniversidad fermín toro diapositivas
Universidad fermín toro diapositivas
 
자료구조 Project1
자료구조 Project1자료구조 Project1
자료구조 Project1
 
数学之美与浪潮之巅
数学之美与浪潮之巅数学之美与浪潮之巅
数学之美与浪潮之巅
 
Azteca Mango
Azteca MangoAzteca Mango
Azteca Mango
 
Social Media to Enable Sales for Natwest Summer Time Talk
Social Media to Enable Sales for Natwest Summer Time TalkSocial Media to Enable Sales for Natwest Summer Time Talk
Social Media to Enable Sales for Natwest Summer Time Talk
 
Klik today
Klik todayKlik today
Klik today
 
이산치수학 Project2
이산치수학 Project2이산치수학 Project2
이산치수학 Project2
 
"Getting Creative with Social Media" BlogPaws Presentation
"Getting Creative with Social Media" BlogPaws Presentation"Getting Creative with Social Media" BlogPaws Presentation
"Getting Creative with Social Media" BlogPaws Presentation
 
Universidad fermín toro diapositivas
Universidad fermín toro diapositivasUniversidad fermín toro diapositivas
Universidad fermín toro diapositivas
 
Make It Happen - AWE Summitt 14 (Zurich)
Make It Happen - AWE Summitt 14 (Zurich)Make It Happen - AWE Summitt 14 (Zurich)
Make It Happen - AWE Summitt 14 (Zurich)
 
이산치수학 Project6
이산치수학 Project6이산치수학 Project6
이산치수학 Project6
 
이산치수학 Project4
이산치수학 Project4이산치수학 Project4
이산치수학 Project4
 
Geometry Unit Slideshow
Geometry Unit SlideshowGeometry Unit Slideshow
Geometry Unit Slideshow
 
Story board
Story boardStory board
Story board
 

Semelhante a 이산치수학 Project3

이산치보고서
이산치보고서이산치보고서
이산치보고서mil23
 
The Art of Computer Programming 1.2.5
The Art of Computer Programming 1.2.5The Art of Computer Programming 1.2.5
The Art of Computer Programming 1.2.5hyun soomyung
 
2012 Dm A0 03 Pdf
2012 Dm A0 03 Pdf2012 Dm A0 03 Pdf
2012 Dm A0 03 Pdfjinwookhong
 
2012 Dm A0 03 Pdf
2012 Dm A0 03 Pdf2012 Dm A0 03 Pdf
2012 Dm A0 03 Pdfkd19h
 
SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제
SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제
SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제NAVER D2
 
python 수학이해하기
python 수학이해하기python 수학이해하기
python 수학이해하기Yong Joon Moon
 
2012 Dm C3 03
2012 Dm C3 032012 Dm C3 03
2012 Dm C3 03chl132435
 
선형연립방정식 가우스소거법
선형연립방정식 가우스소거법선형연립방정식 가우스소거법
선형연립방정식 가우스소거법KyeongWon Koo
 
한양대학교 ALOHA - 봄내전대회_알고리즘반
한양대학교 ALOHA - 봄내전대회_알고리즘반한양대학교 ALOHA - 봄내전대회_알고리즘반
한양대학교 ALOHA - 봄내전대회_알고리즘반NAVER D2
 
[연세대 모르고리즘] 프로그래밍 경진대회 문제 풀이
[연세대 모르고리즘] 프로그래밍 경진대회 문제 풀이[연세대 모르고리즘] 프로그래밍 경진대회 문제 풀이
[연세대 모르고리즘] 프로그래밍 경진대회 문제 풀이NAVER D2
 
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced partNAVER D2
 
선형대수 05. 열벡터공간
선형대수 05. 열벡터공간선형대수 05. 열벡터공간
선형대수 05. 열벡터공간AHRA CHO
 
Computational Complexity
Computational ComplexityComputational Complexity
Computational Complexityskku_npc
 
입체충돌처리
입체충돌처리입체충돌처리
입체충돌처리quxn6
 
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제NAVER D2
 

Semelhante a 이산치수학 Project3 (20)

이산치보고서
이산치보고서이산치보고서
이산치보고서
 
The Art of Computer Programming 1.2.5
The Art of Computer Programming 1.2.5The Art of Computer Programming 1.2.5
The Art of Computer Programming 1.2.5
 
2012 Dm A0 03 Pdf
2012 Dm A0 03 Pdf2012 Dm A0 03 Pdf
2012 Dm A0 03 Pdf
 
2012 Dm A0 03 Pdf
2012 Dm A0 03 Pdf2012 Dm A0 03 Pdf
2012 Dm A0 03 Pdf
 
SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제
SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제
SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제
 
python 수학이해하기
python 수학이해하기python 수학이해하기
python 수학이해하기
 
2012 Dm C3 03
2012 Dm C3 032012 Dm C3 03
2012 Dm C3 03
 
선형연립방정식 가우스소거법
선형연립방정식 가우스소거법선형연립방정식 가우스소거법
선형연립방정식 가우스소거법
 
한양대학교 ALOHA - 봄내전대회_알고리즘반
한양대학교 ALOHA - 봄내전대회_알고리즘반한양대학교 ALOHA - 봄내전대회_알고리즘반
한양대학교 ALOHA - 봄내전대회_알고리즘반
 
Haskell study 2
Haskell study 2Haskell study 2
Haskell study 2
 
집합
집합집합
집합
 
[연세대 모르고리즘] 프로그래밍 경진대회 문제 풀이
[연세대 모르고리즘] 프로그래밍 경진대회 문제 풀이[연세대 모르고리즘] 프로그래밍 경진대회 문제 풀이
[연세대 모르고리즘] 프로그래밍 경진대회 문제 풀이
 
07. PCA
07. PCA07. PCA
07. PCA
 
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
 
선형대수 05. 열벡터공간
선형대수 05. 열벡터공간선형대수 05. 열벡터공간
선형대수 05. 열벡터공간
 
internetinternet
internetinternetinternetinternet
internetinternet
 
Computational Complexity
Computational ComplexityComputational Complexity
Computational Complexity
 
입체충돌처리
입체충돌처리입체충돌처리
입체충돌처리
 
2012 Ds 01
2012 Ds 012012 Ds 01
2012 Ds 01
 
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제
 

이산치수학 Project3

  • 1. project#3 How fast can we sort? 조 : D3
  • 2. 조장 : 2008 고충욱 조원 : 2009 김시백 2011 안영준 2011 정진아 2011 최보은 차 례 1. 프로젝트 설명 2. 일 정 3. 업무분담 4. 초 안 - 알고리즘 및 소스
  • 3. 5. 문제점 6. 해결소스 7. 회의록 1. 프로젝트 설명 과제 1 다음을 정렬하시오 ○ 10~ 29 까지 두 자리 정수가 적힌 20 장의 카드가 있다고 하자. 카드를 무작위로 섞었다. 다음 방법을 이용하여 정렬하고 설명에 답하시오, 각 방법을 사용하고 난 후에는 다시 무작위로 섞었다고 하자. 방법 1 ⦿ 가장 큰 수가 나올 때까지 찾아서 이 카드를 테이블 위에 앞면이 위로 오도록 놓는다. 처음부터 다시 그 다음 큰 수를 찾아서 그 카드 위에 놓는다. 이 과정을 모든 카드를 찾을 때까지 반복한다. 정렬되었는가?
  • 4. - 전체 카드를 몇 번 보아야 하는가? 최소 : 20 번 ⇒ 모든 경우에서 찾는 수가 가장 먼저인 경우 최대 : 20!번 ⇒ 모든 경우에서 찾는 수가 가장 마지막인 경우 - 최악의 경우는 어떻게 초기화 되었을 경우인가? ⇒ 가장 큰수가 마지막으로 초기화 되는 경우 - 최선의 경우는 어떻게 초기화 되었을 경우인가? ⇒ 가장 큰수가 처음으로 초기화 되는 경우 - 시간 복잡도는 얼마인가? ⇒ O(n!) = n!, Ω(n) = n 방법 2 ⦿ 카드를 두 뭉치로 나눈다. 하나는 첫 수가 1 인 것이고 다른 하나는 첫 수가 2 인 것이다. 각 뭉치를 방법 1 을 사용하여 두 번째 수를 정렬한다. 첫 번째 뭉치를 두 번째 뭉치 위에 놓는다. 정렬되었는가? - 카드의 비교 수는 얼마인가? 20 + 10! + 10! + 1 20:두 뭉치로 나눈다, 10!:방법 1 을 정렬, 1:첫 수가 1 인지 2 인지 뭉치비교 방법 3 ⦿ 카드의 두 번째 수를 이용하여 10 개의 뭉치(0~9)로 나눈다. 이제 두 번째 수가 0 인 뭉치를 집어서 첫 번째 수를 보고 두 뭉치로 나누고 뒤집어 놓는다. 두 번째 수가
  • 5. 1 인 뭉치를 집어서 다시 첫 번째 수를 보고 두 뭉치로 나누어 앞의 뭉치 위에 뒤집어 놓는다. 모든 카드에 대해 반복한다. - 카드의 비교 횟수는 얼마인가? 최악의 경우 :20 + 55 + 10 + 1 20:10 개의 뭉치(0~9)로 나눈다, 55:최악의 경우로 두 번째 수가 가장 작은 수를 마지막에 집는다, 10:한 뭉치를 첫 번째 수로 비교, 1:첫 수가 1 인지 2 인지 뭉치비교 최선의 경우 :20 + 10 + 10 + 1 20:10 개의 뭉치(0~9)로 나눈다, 55:최악의 경우로 두 번째 수가 가장 작은 수를 집는다. 10:최선의 경우로 두 번째 수가 가장 작은 수를 처음 집는다, 1:첫 수가 1 인지 2 인지 뭉치비교 두 가지 세기(Counting)의 방법 문제. 원형의 탁자에 5 쌍의 부부가 앉으려고 한다. 이 때,남자와 여자는 교대로 앉아야 하고, 부부는 옆에 나란히 앉을 수 없다고 한다. 그러면 앉을 수 있는 방법은 모두 몇 가지나 되는지 알아보시오. 일상 생활 중에서 우리는 위의 문제와 같은 많은 상황을 만나게 되며, 우리는 이와 같은 문제를 해결하기 위하여 여러 방법의 세기(counting)를 잘 하여야 한다. 일반적으로 세는 방법에 있어서 (1) 순서(order)를 고려하던지 또는 고려하지 않던지; (2) 반복(repetition)을 허락하던지 또는 허락하지 않던지
  • 6. 등을 고려하여 여러 조건 하에서 선택이나 분포를 counting 하는 것은 중요한 문제이며 , 지금부터 차례대로 알아보기로 합시다. 예제 1. 개인사물함에 두 자로 된 명찰을 붙여서 구분 하려고 한다. 한글 `가, 나, 다, ... , 파, 하 ` 의 14 자 중에서 한 글자와 수자 `0, 1, 2, ... , 8, 9`의 열 개중 한 수자를 사용하려고 한다. 이 때 사물함을 구별할 수 있는 명찰을 몇 개 만들 수 있는지 알아보시오. 풀이. 사물함의 명찰의 모양은 한글 : 수자 (예를 들면, 가 3 ) 수자 : 한글 (예를 들면, 4 라 ) 의 경우가 가능하므로, 한글 : 수자 의 경우는 14 x 10 = 140 (가지) 수자 : 한글 의 경우는 10 x 14 = 140 (가지) 따라서, 구별할 수 있는 사물함의 명찰의 개수는 모두 140 + 140 = 280 (개) 이다. 위 예제 1 에서 알 수 있듯이, k 개의 가능성이 있는 일이 독립적으로 시행될 수 있고, 또 각각의 경우의 수가 m1, m2, ..., mk 일 때, 가능한 전체의 경우의 수는 모두 이다. 이것을 합의 법칙 (the addition principle)이라고 한다. 각각의 경우의 수가 m1, m2, ..., mi 인 연속된 일을 시행할 때, 가능한 전체의 경우의 수는 모두 이다. 이것을 곱의 법칙 (the multiplication principle)이라고 한다. 이 두 가지 법칙은 모든 경우의 세기 문제에 있어서 가장 기본적인 법칙이다. 예제 2. 15 명의 회원을 가진 어떤 모임이 있다. 이 때, 회장, 부회장, 총무, 감사를 각각 선출하려고 한다. 가능한 경우의 수는 모두 몇 가지인가 ? 풀이. 회장, 부회장, 총무, 감사를 연속하여 선출하여야 하므로, 곱의 법칙에 의하여
  • 7. 15 x 14 x 13 x 12 (가지) 예제 3. 빨간 주사위 R 과 파란 주사위 B 를 동시에 던질 때 나올 수 있는 눈의 경우의 수를 구하여 보시오. 또, 동일한 두 주사위를 던질 때 나올 수 있는 눈의 경우의 수도 구하여 보시오. 풀이. (1) 빨간 주사위 R 의 눈이 나올 수 있는 경우의 수는 6 가지 파란 주사위 B 의 눈이 나올 수 있는 경우의 수는 6 가지 따라서 곱의 법칙에 의하여 구하는 경우의 수는 모두 6 x 6 = 36 (가지) 이를 구체적으로 구하여 보면, 빨간 주사위 R 과 파란 주사위 B 의 나온 각각 눈을 r, b 라 하고 순서쌍 (r, b)로 표시하면 (1,1), (1,2), (1,3), (1,4), (1,5), (1,6) (2,1), (2,2), (2,3), (2,4), (2,5), (2,6) ... (6,1), (6,2), (6,3), (6,4), (6,5), (6,6) (2) 동일한 두 주사위를 던지는 경우에 위의 경우에서의 (1,2)와 (2,1)은 구별할 수가 없고, 같은 모양으로 이해되므로 가능한 전체의 경우의 수는 모두 1 + 2 + 3 + 4 + 5 + 6 = 21 (가지) 위 예제는 우리가 곧 학습할 중복순열과 중복조합의 전형적인 예로서, 경우 (1)은 중복순열 이고, 경우 (2)는 중복조합 이다. 순서가 있는 선택의 문제 (Ordered choices) m 개의 대상으로부터 r 개를 선택할 경우에,
  • 8. (1) 중복을 허락하는가? (2) 순서를 고려하는가? 를 고려하여 경우의 수를 계산하여야 한다. S 가 공집합이 아닌 집합일 때, 중복을 허용하고 순서를 고려하여 r 개를 선택한 부분집합을 S 의 r 표본(r-sample)이라 한다. S 의 원소의 개수를 n 이라 하고, r 표본의 개수를 구하여 봅시다. 먼저 순서를 고려하므로 r 개의 방을 먼저 순서대로 나열하고 □ □ □ … □ 각 방에는 S 의 원소 n 개 중에서 임의로 한 개를 선택할 수 있으므로 곱의 법칙에 의하여 n×n×…×n= nr 이며, 이것을 중복순열이라고 부른다 정리 1. S 의 원소의 개수를 n 이라 하면, r 표본의 개수는 n×n×…×n= nr 이다. 예제 1. 운동복에 0 부터 9 까지의 수자를 사용하여 두 자리 수자를 붙이려 한다. 그러면 중복순열의 수이므로, 102= 100 가지의 운동복 번호를 붙일 수 있다. 즉, 00 부터 99 까지 모두 100 가지이다. 문제 2. 26 자의 영어 알파벳 중에서 5 자 사용하여 임의로 낱말 모양을 만들려고 한다. 가능한 낱말은 모두 몇 가지인가? 컴퓨터의 모든 코드는 모두 0 과 1 을 사용하여 표현된다. 이것을 binary code 라고 한다. 0,1 중 한 개로 이루어진 정보를 1 bit 라 하고 8 bit 를 1byte 라고 한다. 이때, 1byte code 의 가능한 경우의 수를 살펴보면 중복순열의 원리의 의하여 2 x2 x···x 2 =26 = 64 (가지) 가 가능하다. 개인용 PC 는 정보처리 단위에 따라서 8 bit, 16 bit , 32 bit , 64 bit 등과 같이 한 번에 처리할 수 있는 정보양으로 PC 를 구분하여 부르며, 요즘 Pentium Ⅱ processor 를 갖춘 PC 를 64 bit 운영체제인 PC 라고 부른다.
  • 9. 이 때, 4 byte (32bit) code 의 경우의 수를 알아보면 중복순열의 수에 의한 경우의 수는 모두 이다. 이 숫자는 앞에서 학습한 Hanoi Tower 문제에서 나온 숫자에 버금가는 커다란 수이다. 이제 반복이 허용되지 않고 선택의 수에 대하여 알아 보도록 합시다. 집합 S 의 r-sample 중에서 원소가 모두 다른 것들을 우리는 r-순열 (r- permutation) 이라고 부른다. 또, S 의 원소의 개수가 r 인 경우에 S 의 r-순열은 단순히 순열 (permutation) 이라고 한다. 정리 2. S 의 원소의 개수가 n 일 때, r-순열의 수는 이다. 증명.r-순열은 모두 다른 원소를 r 개 골라서 순서대로 나열하는 방법의 수이므로, 곱의 법칙을 사용하면 이다. 기호의 약속 (1) n = r 일 때 : (2) r = 0 일 때 : 0-순열은 의미가 없다. 그러나 계산의 편의를 위하여 모든 n 에 대하여 로 약속한다. 실제로 n ! 은 Gamma 함수로 정의되는 수의 특수한 경우로 이해되는 수로서, p >0 인 임의의 실수 일 때 함수는 다음과 같이 정의된다 : 그러면 모든 p >0 에 대하여 점화식 가 성립하고, 이 때 특별히 p 가 자연수이면
  • 10. 가 된다. ( 공학수학이나해석학 책을 참조하시오.) 예제 4. 12 명의 회원을 가진 모임에서 서로 다른 직함을 갖는 4 명을 선출하는 방법의 경우의 수는 ? 풀이. 예제 5. 알파벳 A, B, C, D 가 각각 쓰여진 네 장의 카드를 모두 사용하여 만들 수 있는 단어는 모두 몇 가지인가 알아보시오. 풀이. 순서가 없는 선택의 문제 (Unordered choice) n 개의 원소를 갖는 집합 S 로 부터 r 개의 서로 다른 원소를 순서를 고려하지 않고 선택한 집합을 S 의 r-조합(r-combination)이라고 하고, r-조합의 수를 과 같이 표기한다. 정리 1. 증명. r-순열의 개수는 이고 r 개를 나열하는 방법의 수는 이다. 따라서
  • 11. 예제 1. 12 명의 모임에서 4 명을 임의로 선출 하는 방법의 수는? 풀이. 예제 2. OCU 의 교양과정에는 5 개의 과학 교과목과 4 개의 역사 교과목이 있다. 은지는 이번 학기에 2 개의 과학 교과목과 2 개의 역사 교과목을 선택하려고 한다. 이 때 은지가 선택할 수 있는 과목의 경우의 수는? 풀이. 예제 3. 7 개의 -(dash)와 5 개의 / (slash)를 한 줄에 나열하는 방법은 모두 몇 가지인가 알아보시오. 풀이. 우선 모두 12 개의 방이 나열되어 있다고 생각하고, 그 중 5 개를 순서에 관계없이 골라서 그 방에 / 를 넣는다고 생각하면 된다. 따라서 구하는 경우의 수는 모두 이다. 또 위의 문제의 풀이에서 7 개의 방을 골라서 - 를 넣어도 되므로 가 되며, 이 두 수는 같다. 즉, 일반적으로, 우리는 조합수에 관한 항등식 을 얻을 수 있다. 예제 4. 영어 단어 MISSISSIPI 의 모든 영어 철자를 사용하여 만들 수 있는 새로운 단어의 개수를 구하여 보시오.
  • 12. 풀이. 영어 단어 MISSISSIPI 는 M 이 1개 I 가 4개 S 가 4개 P 가 2개 이므로 모두 11 자이다. 그러면, 11 개의 방을 나열해 놓고, 먼저 S 를 넣는 방법은 다음에 M 을 넣는 방법은 S 를 넣는 방법은 P 를 넣는 방법은이다. 따라서 구하는 방법의 수는 곱의 법칙에 의하여 이와 같은 중복되어 있는 것들에 관한 순열을 중복순열이라고 한다. 일반적으로 다음의 정리가 성립한다. 정리 2. 전체의 개수가 인 object 를 한 줄에 나열하는 방법의 수는 증명. 위의 예제와 같은 방법으로 생각한다. 즉, n 개의 방이 있을 때, 먼저 n1 개를 고르는 방법은 또 ( n-n1)개 가운데서 n2 개를 고르는 방법은 또, 이와 같은 방법으로 우리가 구하는 전체 경우의 수는
  • 13. 따라서, 구하는 전체의 가지 수는 이다. 위의 정리 2 에서 가능한 경우의 수를 라 쓰며, 이를 다항계수(multinomial coeffcient) 라고 한다. 특히 k=2 인 경우 다항계수는 앞에서 학습한 조합의 수 과 같다 . (왜냐하면, n = n1 + n2 이므로) 원소의 개수가 n 인 집단으로부터 중복을 허용하여 r 개를 고르는 것을 r-선택 (r-selection)이라 하고, 이를 중복조합이라고 한다. 이 때, r 은 n 보다 커도 무방하다. 또, r-선택 중에서 원소가 모두 다른 것을 우리는 r-조합이라고 부른다. 정리 3 . 원소의 개수가 n 인 r-선택의 수(중복조합)는 이다. 증명. 집합 S 를 이라 두자. 각각의 r-선택을 r 개의 - 와 (n-1) 개의 / 로 이루어진 수열로 대응 할 수 있다. 예를 들면, 집합 S 가 일 때, 가 5-선택이라면 이것은 -/--//--/ 와 같다고 생각할 수 있다. 또, s2, s2, s3 는 3-선택으로 이것은 /-/--// 와 같다고 생각한다. 따라서, 우리가 구하는 선택의 수는 정리 3 에 의하여 이다. 예제 5. 알파벳 26 자를 중복을 허락하여 3 자를 골라서 나열하여 만들 수 있는 단어의 수는 몇 개인가?
  • 14. 풀이 . 먼저 중복 조합의 수는 순서대로 나열하는 수는 중복순열이므로 원순열과 기타 배열의 방법 모든 배열의 경우의 수는 모든 기본적인 수 법칙 , 즉 곱의 법칙과 합의 법칙에 의하여 구할 수 있다. 예제 1. 원판을 꼭 같은 넓이로 100 등분하여 수자 1 부터 100 까지 임의대로 쓰려고 한다. 이 때, 가능한 모든 경우의 수는? 풀이. 일렬로 나열하는 방법은 모두 100! 이다. 그런데 수자가 원형으로 나열되어 있으므로, 한 수자를 임의로 고정시키고 나머지는 일렬로 나열 한다고 생각하면 된다 . 따라서 구하는 경우의 수는 (100-1)! 이다. 위의 예제와 같은 순열을 원순열(circular arrangement)이라고 한다. 어떤 성질을 갖는 object 의 counting 은 전체의 경우에서 그 성질을 object 의 수를 빼어서 계산할 수 있다. 이와 같은 방법을 여사건을 이용하여 counting 하는 방법 이라고 한다. 예제 2. 48 장의 트럼프 카드가 있다. 두 장의 카드를 나누어 줄 때, (1) 적어도 1 장이 ace 일 경우의 수는? (2) 두 장이 모두 ace 일 경우의 수는? (3) 한 장 만이 ace 일 경우의 수는? 풀이. (1) 곱의 법칙에 의하여 4×3 가지 (2) 여사건을 이용하여 계산한다. 즉, 두 장이 모두 ace 가 아닌 경우의 수는 모두 48 x 47 가지이므로, 구하는 경우의 수는 52×51 - 48×47 = 396 다른방법으로 ace×ace 가 아닌 것 또는 ace 가 아닌 것×ace 인 경우이므로
  • 15. 4 × 48 = 192 48 × 4 = 192 따라서 구하는 전체 경우의 수는 모두 396 가지 (3) (1)에 의하여 396 - 12 = 384 가지 예제 3. 3 명의 남자와 6 명의 여자가 한 줄로 정렬한다. 이 때, 두 남자는 계속하여 줄서지 않는다고 한다. 정렬할 수 있는 가능한 경우의 수는? 풀이. 먼저 여자들이 정렬하는, 방법을 구하면 6! 이다. 이 때, 여자와 여자 사이의 빈 칸에 남자가 추가되는 것으로 이해하면, 모두 7 칸의 빈 칸 중에서 3 칸을 골라서 나열한 것이므로 따라서 구하는 경우의 수는 예제 4. 1 부터 9 까지의 수자 중에서 연속한 두 수자를 뽑지 않고서 3 개의 수자를 선택하는 방법의 수는? 풀이. 선택한 수를 1, 선택안한 수를 0 으로 표시한다면, 예를 들어 1001010000 은 숫자 1, 4, 6 을 뽑은 것으로 생각 할 수 있다. 따라서, 6 개의 0 이 나열되어 있고 0 사이의 빈칸 7 개 중에서 3 개를 고르면 되므로 구하는 경우의 수는 이다. 출처 : http://web.chungbuk.ac.kr/~wkkim/L51-0005_02_01.html#제 2 절 2. 일 정 일 정 내 용
  • 16. 팀의 팀장을 정하고, 과제에 대해 토의 후 팀원의 12. 4. 11 임무분담을 정함. k-combination 에 대한 과제 2 의 알고리즘을 구하고, 12. 4. 17 소스의 초안을 완성함. 과제 2 의 소스 초안을 바탕으로 한 문제점을 토의 후 12. 4. 18 최종안을 완성함. 12. 4. 19 보고서 작성 후 검토 3. 업무분담 이 름 분 담 내 용 고충욱 조장임무 및 자료조사 김시백 보고서작성 및 자료조사 안영준 알고리즘을 바탕으로 한 소스구성
  • 17. 정진아 알고리즘 구성 및 자료조사 최보은 알고리즘 구성 및 자료조사 4. 초 안 (1) 알고리즘 및 소스 1.문자를 받는다.(숫자를 받을 때마다 n 갯수를 늘리고 마지막 괄호를 닫을 때 n 개수를 계산해서 arc 에 넣는다.) 2.숫자를 받는다.(cnt) 3.순서를 정해두는 변수에 순서를 저장한다(본 코딩에선 sun[]) 4.맨 처음은 문자를 순서대로 cnt 만큼 출력한다. 5.마지막이 아닐 경우 (, )를 출력한다. 6.출력문자중 제일 마지막 문자에 해당하는 sun[]의 수를 올린다.(ex:cnt=3 일 경우- sun[1]sun[2]sun[3]이 sun[1]sun[2]sun[4]가 된다.) 7.문자를 sun[]에 입력받은 대로 cnt 만큼 출력하고 6 번부터 다시 실행한다. 8.만약 sun[현재숫자]이 더 이상 커질 수 없을 때 sun[현재숫자-1]이 한칸을 옮기고 sun[현재숫자]는 sun[현재숫자-1]의 뒤에 두고 다시 7 번으로 간다. 9.마지막까지 갔을 때 종료시킨다. #include <stdio.h> int main() {
  • 18. char ch[20]; char v; int cnt; int arc; int b; int m; int n; for(;;){ scanf("%c",&v); if(v=='{' && m==0){ m++; } else if(ch[n-1]!=',' && v=='}'){ break; } else if(n==21){ break; } else if(v!=','){ ch[n]=v; n++; } } arc=n-1;
  • 19. b=arc+1; if(n-1==19){ arc=20; } scanf("%d",&cnt); /* 1. 처음 세 문자를 출력한다. 2. 다음에 마지막 한문자를 뒤로 옮겨서 재 출력한다. 3. 마지막 문자가 마지막에 닿았을때 그 앞순서문자를 뒤로 한칸옮긴다. 4. 마지막 까지 출력을 다하면 끝낸다. */ scanf("%d",n); } 5. 문제점 프로그램에서 원소와 선택하는 방법의 수를 입력하였지만, 이것을 토대로 출력 값이 알맞게 생성되지 않음. 6. 해결소스 #include <stdio.h> int main() { char ch[20]; char v,w;
  • 20. int sun[20]; int cnt; int arc; int in[20]; int x,y,z; int m=0; int n=1; int l; int a=0,b,c; for(y=1;y<=20;y++){ sun[y]=y; } for(;;){ scanf("%c",&v); if(v=='{' && m==0){ m++; } else if(ch[n-1]!=',' && v=='}'){ break; } else if(n==21){ break; } else if(v!=','){
  • 22. if(sun[z]!=b){ break; } else{ a++; b--; } if(sun[1]==arc-cnt+2){ break; } } if(sun[1]==arc-cnt+2){ break; } printf(", "); } scanf("%d",n); } 7. 회의록 <1 차> 회의일시 2012 년 04 월 09 일 조 D3 작성자 11 최보은 참석자 08 고충욱 09 김시백 11 안영준 11 정진아
  • 23. 1. 문제 파악 2. 업무 분담 회의안건 3. 앞으로의 계획 설정 4. 방법 1, 2, 3 논의 내 용 비 고 -주제 정렬(sorting)에 대해 간단한 토의 -업무분담 : 조장 - 고충욱 보고서 - 김시백 자료조사 - 정진아, 최보은 소스코딩 - 안영준 회의내용 -방법 1, 2, 3 논의 : 정렬을 사용해 경우의 수 구하기. 정렬(비교 + 이동), 비교 (비교) -다음 시간까지 관련 용어에 대해 숙지. -알고리즘 회의 : 입력형태 - {x,y,z}, 최대 20 개까지 입력 ~4/17 까지 소스 완성. <2 차> 회의일시 2012 년 04 월 17 일 조 D3 작성자 11 최보은 참석자 08 고충욱 09 김시백 11 안영준 11 정진아
  • 24. 1. 자료조사 토의 2. 알고리즘 문제점 토의 회의안건 3. 방법 1, 2, 3 논의 4. 앞으로의 일정 계획 내 용 비 고 - 자료조사 토의 : 셈의 원리(합의 법칙, 곱의 법칙) 중복순열, 중복조합, 순열, 조합 각각의 정의와 공식 구현방법에 대해 토의 - 알고리즘 문제점 토의 : ex) {a,b,c} 2 입력 경우 ab -> ac 넘기는 부분 토의 회의내용 회의 후 ~18 까지 소스 완성 - 방법 1, 2, 3 논의 : 셈의 논리(합의 법칙, 곱의 법칙)을 이용해 회의 후 결과 도출 - 일정 : 다음 시간 최종 소스 이해 최종 보고서 작성 방법 1, 2, 3 을 완벽히 작성
  • 25. <3 차> 회의일시 2012 년 04 월 18 일 조 D3 작성자 11 최보은 참석자 08 고충욱 09 김시백 11 안영준 11 정진아 1. 용어 공식 정리 2. 방법 1, 2, 3 정리 회의안건 3. 최종 소스 이해 4. 최종 보고서 작성 회의내용 내 용 비 고
  • 26. - 중복조합(서로 다른 n 개에서 중복을 허용하여 r 개를 택하는 조합)공식 : nHr = n+r-1Cr 임을 유도 및 토의 - 방법 1, 2, 3 정리 : 보고서에 넣는 양식으로 마지막 최종 정리 - 최종 소스 이해 : 전 회의의 문제점 해결을 바탕으로 소스 구현, 및 소스 이해 - 최종 보고서 작성 : 기초로 만들어진 보고서를 바탕으로 회의를 통해 보고서 작성