조합수 체계

Combinatorial number system

수학에서, 특히 콤비네이터학에서, 콤비네이터학이라고도 하는 k(일부 양의 정수 k)의 조합수 체계 또는 정수맥컬레이 표현자연수(0을 포함하도록 지시됨) Nk-결합 사이의 일치로서, 엄격히 감소하는 시퀀스 > ...로k 표현된다.> c2 > c1 > c 0 0. 후자는 숫자의 문자열이기 때문에, 주효용성은 반대쪽이 아니라 N에 의한 k-combination을 나타내고 있지만, N을 나타내기 위한 일종의 숫자 체계로 볼 수 있다.구별되는 숫자는 구별되는 k-결합에 대응하며, 이를 사전순으로 생산한다. 더욱이 ) 보다 작은 숫자는 {0, 1, ..., n - 1}의 모든 k-결합에 해당한다.대응은 k-결합에서 가져온 집합의 n 크기에 따라 달라지지 않으므로, N에서 N에서 가져온 k-결합까지의 지도로 해석할 수 있다. 이 관점에서 대응은 편향이다.

(ck, ..., c2, c1)에 해당하는 N은 다음에 의해 주어진다.

어떤 숫자 N과 매우 일치하는 고유 시퀀스라는 사실은 D. H. Lehmer에 의해 관찰되었다.[1]말로 탐욕 알고리즘:(ckm그리고 4.9초 만 km그리고 4.9초 만)≤ N{\displaystyle{\tbinom{c_{k}}{k}과}}, 그때(ck− 1k− 1)≤ N−(ckm그리고 4.9초 만 km그리고 4.9초 만){\displaystyle{\tbinom{c_{k-1}}{k-1}과ck−1 최대 걸리}\leq N-{\tbinom{c_{k}}{k}}}ck 최대 \leq N을 타고 k-combination N에 해당하는 것을 발견한다. 그렇게넷째. 위의 공식을 이용하여 k-combinationk(c2, ..., c, c1)으로부터 숫자 N을 찾는 것을 "순위"라고도 하고, 반대 연산(욕심 알고리즘에 의해 주어짐)을 "순위"라고 하며, 이러한 연산들은 대부분의 컴퓨터 대수학 시스템계산 수학에서 그러한 이름으로 알려져 있다.[2][3]

원래 사용된 용어인 "정수의 조합적 표현"은 크누스에 의해 "조합적 숫자 체계"로 단축된다.[4] 크누스는 또한 훨씬 더 오래된 참조를 제공한다.[5] "조합적 숫자 체계"라는 용어는 (이전의 용어나 작업에 대한 언급 없이) 제임스 맥카프리에[6] 의해 도입되었다.

요인 번호 체계와 달리 도 k의 조합 번호 체계는 혼합 라딕스 시스템이 아니다: "자리" ci 대표되는 숫자 N의 부분 은 단순히 장소 값으로 곱하여 얻을 수 없다.

조합 번호 시스템의 주요 적용은 사전 편찬 순서에서 주어진 위치에 있는 k-결합에 대한 신속한 연산을 허용하며, 이에 앞서 k-결합이 명시적으로 나열되지 않아도 된다. 이는 예를 들어 특정 집합의 k-결합이 무작위로 생성되는 것을 허용한다.k-combination의 열거에는 소프트웨어 테스트, 샘플링, 품질 관리, 복권 게임 분석 등 응용분야가 많다.

오더 조합

세트 S의 k-결합은 k (distinct) 원소가 있는 S부분집합이다.조합 번호 시스템의 주요 목적은 n 원소 집합 S의 가능한 모든(k ){\{\에 대해 각각 하나의 숫자로 표현하기 위한 것이다.이러한 집합으로 n, {0, 1, ..., n - 1을 선택하는 것은 주어진 k-결합 C의 표현이 n의 값과 무관하게 배열될 수 있다(물론 n은 충분히 커야 하지만), 즉 n을 증가시켜 C를 더 큰 집합의 하위 집합으로 간주하는 것은 C를 나타내는 숫자를 변경하지 않는다.따라서 조합 번호 시스템의 경우 n을 명시적으로 언급하지 않고 C를 모든 자연 번호의 집합 N의 조합으로 간주한다.

{0, 1, ..., n - 1}의 k-combination을 나타내는 숫자가 {0, 1, ..., n - 1}에 포함되지 않은 k-combination을 나타내는 숫자보다 작도록 하려면 가장 큰 요소를 먼저 비교하는 방식으로 k-combination을 정렬해야 한다.이러한 특성을 가진 가장 자연스러운 순서는 원소의 감소 순서에 대한 사전 편찬 순서다.So comparing the 5-combinations C = {0,3,4,6,9} and C′ = {0,1,3,7,9}, one has that C comes before C′, since they have the same largest part 9, but the next largest part 6 of C is less than the next largest part 7 of C′; the sequences compared lexicographically are (9,6,4,3,0) and (9,7,3,1,0).이 순서를 설명하는 또 다른 방법은 숫자의 이진 표현에서 k 상승 비트를 설명하는 보기 조합으로, C = {c1, ..., ck}이(가) 숫자를 설명하는 것이다.

(이것은 모든 유한한 자연수 집합에 별개의 숫자를 연관시킨다.) 그런 다음 k-mult의 비교는 관련된 이진수를 비교함으로써 이루어질 수 있다.예제에서 CC는 숫자 10010110012 = 601과10 10100010112 = 651에10 해당하며, 다시 CC보다 먼저라는 것을 보여준다.많은 이진수가 k와 다른 상승 비트의 수를 가지므로, 이 숫자는 k-조합을 나타내려고 하는 것이 아니라, 순서가 지정된 (전용) k-결합 목록에서 C의 상대적 위치를 찾으려고 하기 때문이다.

주문에서 조합된 장소

k-결합 C에 대한 k의 조합 번호 시스템에 관련된 숫자는 주어진 순서에서 C보다 엄격히 적은 k-결합 수입니다.이 숫자는 Ck > ...k 함께 C = {c2, ..., c, c1}에서 계산할 수 있다.> c > c2 다음1 같다.순서의 정의에서 그것은 각 k-결합 S에 대해 Ci S에 없는 반면 ck, ..., ci+1 S에 존재하고 c보다i 큰 다른 값은 C에 존재하지 않는 고유한 지수 i가 있다는 것을 따른다.따라서 이러한 k-결합 S를 가능한 값 1, 2, ..., k of i에 따라 그룹화하고 각 그룹을 개별적으로 계수할 수 있다.주어진 인 i의 경우k ci+1, ..., c in S를 포함해야 하며, S의 나머지 i 요소는 c보다i 엄격히i 작은 c 비 음의 정수에서 선택해야 한다. 더욱이 그러한 선택은 k-결합 S를 C보다 엄격히 적게 만든다.가능한 선택 횟수는( ) 이며 따라서 그룹 i의 조합 수입니다. 총 k-결합 횟수는 C보다 절대적으로 작다.

그리고 이것은 순서가 지정된 k-combination 리스트에 있는 C의 지수(0부터 시작)이다.분명히 모든 NN에 대해 리스트의 지수 N에 정확히 하나의 k-combination이 존재하므로(k ≥ 1을 제공함), 위의 주장은 모든 N이 주어진 형태의 k 이항계수의 합으로 정확히 한 가지 방법으로 작성될 수 있음을 증명한다.

지정된 숫자에 대한 k-결합 찾기

주어진 공식은 주어진 k-combination의 사전순으로 장소를 즉시 찾을 수 있다.주어진 장소 N에서 k-combination을 찾는 역방향 과정은 다소 더 많은 작업이 필요하지만 그럼에도 불구하고 간단하다.사전 편찬 순서의 정의에 따라, 가장 큰 요소k c가 다른 두 개의 k-콤비네이션은 가장 큰 요소들의 비교에 따라 정렬될 것이며, 가장 큰 요소의 고정값을 가진 모든 조합은 리스트에서 연속된다.더욱이 ck 가장 큰 요소로 하는 가장 작은 조합은 이며 모든 i <k대해i c = i - 1을 가진다이 조합의 경우 (k 을 제외한 식의 모든 항은 0이다.따라서 ck는 가장 큰 숫자가(ckm그리고 4.9초 만 km그리고 4.9초 만)≤ N{\displaystyle{\tbinom{c_{k}}{k}}\leq N}. 만약 k;k-combination 형태의 1나머지 요소는 k입니다. − 1-combination은 수에 해당하는 N−(ckm그리고 4.9초 만 km그리고 4.9초 만){\displaystyle N-{\tbinom{c_{k}}{k}}}의 조합 수 체계. 의k - 1이며, 따라서 N과 k 대신 N- ( k - 1에 대해 동일한 방법으로 계속하면 찾을 수 있다.

위치 72에서 5-조합을 결정하려고 한다고 가정합시다.n = 4, 5, 6, ...에 대한( 5) }{5의 연속적인 값은 0, 1, 6, 21, 56, 126, 252이고, 그중 72를 초과하지 않는 가장 큰 값은 56이며, n = 8이다.따라서 c5 = 8이고 나머지 원소는 위치 72 - 56 = 16에서 4 결합을 형성한다.(n4){\displaystyle{\tbinom{n}{4}의 n=3,4,5의 연속 값}}...것은 0,1,5,15,35,..., 그것들의 가장 큰 하나의 16을 초과하지 않15, n을)6, 그렇게=6c4. 계속되는 비슷한 만한 주제를 찾아보기 위한 3-combination에 위치 16− 15=1한개를 찾았다 3=3을 사용하는으로 최후. 이것을 설정한다 72., and the remaining values ci will be the maximal ones with , namely ci = i − 1.따라서 우리는 5개 결합 {8, 6, 3, 1, 0}을(를) 찾았다.

Excel의 국가별 복권 예

) {49566 복권 조합 c1 < c4 < c23 >, 0과( 6) 사이 목록 번호 N이 있음 }{61}을 추가하면 찾을 수 있다.

가능한 결과 목록에서 영국 전국 복권 결과 3,6,15,17,18,35의 위치를 찾기를 원한다고 가정합시다.Excel 함수 COMBIN(49,6)은 결과 수가 13983816이라는 것을 보여준다.이제 숫자 3,6,15,17,18,35를 각각 셀과 공식에 넣고 COMBIN(49-3,6),COMBIN(49-6,5),COMBIN(49-15,4),COMBIN(49-17,3),COMBIN(49-18,2), 49-35를 각각 밑에 넣으세요.실제 값 대신 셀 참조를 사용하여 판독성을 제공한다.당신은 9366819,962598,46376,4960,465,14의 번호를 얻게 될 것이다.이것들을 추가하면 10381232의 특정 위치가 보일 것이다.14를 얻기 위해 COMBIN(49-35,1) 공식을 사용할 필요는 없다는 점에 유의하십시오.49-35만 빼면 가질 수 있다.또한 COMBIN 함수는 49-X가 6 미만이 되는 경우 0을 반환하지 않는다.#NUM!을 0으로 변환하려면 ISNUMBER 기능이 있는 IF를 사용해야 한다.

이제 역공학은 좀 더 까다롭다.하나의 셀에서 49개의 IF 문을 사용하거나 해결기를 사용하여 COMB에 대한 최대 인수를 찾을 수 있다.결과적으로 위치 번호보다 작거나 같아야 한다.대신 6 x 49의 표를 사용하고 결과 행 번호가 인수와 볼 번호가 되는 MATION 함수를 사용합시다.6 ~ 1(B1:G1)의 열 머리글을 내림차순으로 만들고 1 ~ 49의 행 레이블을 만들 경우(A2:A50)을 오름차순으로(Excel에서 수직 상승은 위에서 아래로 증가하는 숫자를 의미한다.그런 다음 왼쪽 상단 모서리에서 COMBIN($A2,B$1) 공식을 표에 채우십시오.달러 표시는 항상 색인 값이 머리글 행과 레이블 열에서 추출되도록 할 것이다.#NUM!을 0으로 교체하십시오.이런 걸 얻어야지

654321
1000001
2000012
3000133
4001464
501510105
6161520156
77213535217
828567056288
98412612684369
102102522101204510
114624623301655511
129247924952206612
.....................
4913983816190688421187618424117649

이제 6개의 셀로 구성된 새 행을 만들어 각 열에서 해당 위치 번호보다 작거나 같은 가장 큰 값을 찾을 수 있는 공식으로 채우십시오.=INDEX(B2:B50,Match(10381232,B2:B50), 나머지 셀은

인덱스(C2:C50, Match(10381232-SUM(기존 셀의 경우), C2:C50) ...지수(G2:G50, Match(10381232-SUM(기존 셀의 경우), G2:G50))

이렇게 하면 이미 9366819,962598,46376,4960,465,14 다음 열에서 첫 번째 셀 쓰기 =49-MATCH(10381232,B2:B50) 및 이와 유사하게 표시된다.

=49-Match(10381232-9366819, C2:C50) ...=49-Match(10381232-9366819-962598-46376-495,G2:G50)

다시 실제 값 대신 셀에 대한 참조를 사용하십시오.당신은 3,6,15,17,18,35의 원래 볼 번호를 받아야 한다.

이제 싱글 =randwidth(1,combin(49,6))에서 새로운 복권 번호 조합을 생성하거나 이전 결과의 목록 위치 번호를 확인하여 추세가 있는지 확인할 수 있다.

적용들

조합 번호 시스템을 사용하여 주어진 유한 집합의 모든 k-결합 목록을 작성하거나 이동시킬 수 있지만, 이는 매우 비효율적인 방법이다.실제로, 일부 k-조합을 고려할 때 위에서 제시한 방법으로 숫자를 k-조합으로 변환하는 것보다 직접 사전순으로 다음 조합을 찾는 것이 훨씬 쉽다.다음 조합 찾기 위해서는, 작은 찾은 나는 ≥ 2에 사용되지도 나쁘지도 않은 ≥ ci−1+2(만약 그런 게 없다 나는, 정도 나는을 k+1);그 다음을 증가시키 ci−1에 의해 하나와 수립하는 모든 cj과 j<나는 − 1에 그들의 극소 값 j− 1. 만약 k-combination에 의해 대표된 그 건물의 특징 벡터,로 이진 값으로 k1비트, 그 당시에 그러한 가치관이 될 수 있compu.테드 without 비트 와이즈 산술을 사용한 모든 루프: 다음 C++ 함수가 전진한다.x 값을 입력하거나 false를 반환한다.

// 다음 k-properties 찾기 바가지 긁다 next_snow(서명이 없는 장기의& x) // x가 2진수로 x'01^a10^b라고 가정함 {   서명이 없는 장기의 u = x & -x; // 가장 오른쪽 비트 1 추출, u = 0'00^a10^b   서명이 없는 장기의 v = u + x; // 마지막 비반복 비트 0을 설정하고 오른쪽으로 지우기; v=x'10^a00^b   만일 (v==0) // 그런 다음 v 또는 x=0에서 오버플로우     돌아오다 거짓의; // 다음 k-properties를 나타낼 수 없다는 신호   x = v +(((v^x)/u)>>2); // v^x = 0'11^a10^b, (v^x)/u = 0'0^b1^{a+2}, x ← x'100^b1^a   돌아오다 진실의; // 성공적인 완료 } 

이것은 고스퍼의 해킹이라고 불리며,[7] 해당 조립 코드HACMEM에서 항목 175번으로 설명되었다.

반면에 지수 N에서 k-combination을 직접 생성할 수 있는 가능성은 유용한 응용 프로그램을 가지고 있다.특히, 단순히 그 숫자를 해당 k-결합으로 변환하여 <( ) 을(를) 가진 임의 정수 N을 사용하여 n-요소 집합의 무작위 k-조합을 생성할 수 있다컴퓨터 프로그램이 주어진 유한 집합의 모든 k-결합에 관한 정보가 있는 표를 유지할 필요가 있는 경우, 조합과 관련된 지수 N의 계산은 검색 없이 테이블에 접근할 수 있게 한다.

참고 항목

참조

  1. ^ 응용 결합 수학, 에드.E. F. 베켄바흐(1964), 페이지 27-30.
  2. ^ http://www.site.uottawa.ca/~lucia/cours/5165-09/GenCombObj.pdf
  3. ^ "Combinations — Sage 9.4 Reference Manual: Combinatorics".
  4. ^ Knuth, D. E. (2005), "Generating All Combinations and Partitions", The Art of Computer Programming, vol. 4, Fascicle 3, Addison-Wesley, pp. 5−6, ISBN 0-201-85394-9.
  5. ^ Pascal, Ernesto (1887), Giornale di Matematiche, vol. 25, pp. 45−49
  6. ^ McCaffrey, James (2004), Generating the mth Lexicographical Element of a Mathematical Combination, Microsoft Developer Network
  7. ^ Knuth, D. E. (2009), "Bitwise tricks and techniques", The Art of Computer Programming, vol. 4, Fascicle 1, Addison-Wesley, p. 54, ISBN 978-0-321-58050-4