Kombinatorial sanoq tizimi - Combinatorial number system

Yilda matematika va xususan kombinatorika, kombinatorial sanoq tizimi daraja k (ba'zi bir musbat tamsayı uchun k), shuningdek, deb nomlanadi kombinatika, o'rtasidagi yozishmalar natural sonlar (0 qo'shilishi uchun olingan) N va k-kombinatsiyalar sifatida ifodalangan qat'iy ravishda kamayadi ketma-ketliklar vk > ... > v2 > v1 ≥ 0. Ikkinchisi raqamlar qatori bo'lgani uchun, buni o'ziga xos ko'rinish sifatida ko'rish mumkin raqamlar tizimi vakili uchun N, garchi asosiy yordamchi dastur a k-boshlash N aksincha emas. Alohida raqamlar aniq raqamlarga mos keladi k- kombinatsiyalar va ularni ishlab chiqarish leksikografik tartib; Bundan tashqari, raqamlar kamroq hammaga mos keladi k-birlashmalari { 0, 1, ..., n − 1}. Yozishmalar hajmiga bog'liq emasn to'plami k-kombinatsiyalar olingan, shuning uchun uni xarita sifatida talqin qilish mumkin N uchun k- olingan kombinatsiyalar N; bu ko'rinishda yozishmalar a bijection.

Raqam N mos keladigan (vk,...,v2,v1) tomonidan berilgan

Noyob ketma-ketlikning har qanday raqamga mos kelishi N tomonidan kuzatilgan D. X. Lemmer.[1] Darhaqiqat a ochko'zlik algoritmi topadi k-ga mos keladigan kombinatsiya N: olish vk maksimal , keyin oling vk − 1 maksimal , va hokazo. Raqamni topish N, yuqoridagi formuladan foydalanib, dan k-birlashtirish (vk,...,v2,v1) "martabali" deb ham nomlanadi va qarama-qarshi operatsiya (ochko'z algoritm tomonidan berilgan) "unranking" deb nomlanadi; ushbu operatsiyalar ko'pchilik nomlar bilan ma'lum kompyuter algebra tizimlari va hisoblash matematikasi.[2][3]

Dastlab ishlatilgan "butun sonlarning kombinatorial vakili" atamasi "kombinatorial sanoq sistemasi" ga qisqartirildi Knuth,[4]kim ham ancha eski ma'lumotnoma beradi;[5]"kombininadik" atamasi Jeyms Makkaffri tomonidan kiritilgan [6] (avvalgi atamashunoslikka yoki asarga murojaat qilmasdan).

Dan farqli o'laroq faktorial sanoq tizimi, darajaning kombinatorial sanoq tizimi k emas aralash radius tizim: qism raqamning N "raqam" bilan ifodalangan vmen undan shunchaki joy qiymatiga ko'paytirib olinmaydi.

Kombinatorial sanoq tizimining asosiy qo'llanilishi shundaki, bu tezkor hisoblash imkonini beradi k- aniq ro'yxatni ko'rsatmasdan, leksikografik tartibda ma'lum bir joyda joylashgan kombinatsiya k- undan oldingi kombinatsiyalar; bu tasodifiy avlodni yaratishga imkon beradi k- berilgan to'plamning kombinatsiyalari. Sanab o'tish k-birlashmalar ko'plab dasturlarga ega, ular orasida dasturiy ta'minotni sinovdan o'tkazish, namuna olish, sifat nazorati va tahlil qilish lotereya o'yinlar.

Kombinatsiyalarga buyurtma berish

A k- to'plamning kombinatsiyasi S ning pastki qismi S bilan k (aniq) elementlar. Kombinatorial sanoq tizimining asosiy maqsadi - ularning barchasini bitta raqam bilan aks ettirish mumkin k- to'plamning kombinatsiyasi S ning n elementlar. Tanlash, har qanday kishi uchun n, {0, 1, ..., n − 1} bunday to'plam sifatida, berilganni tasvirlashi mumkin k-birlashtirish C ning qiymatidan mustaqil n (garchi n albatta etarlicha katta bo'lishi kerak); boshqacha qilib aytganda C ortishi bilan kattaroq to'plamning pastki qismi sifatida n ifodalaydigan raqamni o'zgartirmaydiC. Shunday qilib, kombinatorial sanoq tizimi uchun faqat ko'rib chiqiladi C kabi k- to'plamning kombinatsiyasi N aniq natural zikr qilinmasdan barcha tabiiy sonlarning n.

Ni ifodalovchi raqamlarni ta'minlash uchun k-birlashmalari {0, 1, ..., n − 1} vakili bo'lganlardan kamroq ktarkibida bo'lmagan kombinatsiyalar {0, 1, ..., n − 1}, the k-birlashmalar birinchi navbatda ularning eng katta elementlari taqqoslanadigan tarzda buyurtma berish kerak. Ushbu xususiyatga ega bo'lgan eng tabiiy buyurtma leksikografik buyurtma ning kamayish ularning elementlari ketma-ketligi. Shunday qilib, 5-kombinatsiyalarni taqqoslash C = {0,3,4,6,9} va C'= {0,1,3,7,9}, bittasida shunday bo'ladi C oldin keladi C", chunki ular xuddi shu eng katta qismga ega 9, ammo keyingi eng katta qism 6 qismga ega C ning keyingi 7-qismidan kichikroq C'; leksikografik jihatdan taqqoslangan ketma-ketliklar (9,6,4,3,0) va (9,7,3,1,0). Ushbu buyurtmani tasvirlashning yana bir usuli - bu kombinatsiyani tavsiflovchi ko'rinish ko'rinishidir k sonni ikkilik tasvirida ko'tarilgan bitlar, shunday qilib C = {v1,...,vk} raqamni tavsiflaydi

(bu aniq raqamlarni bog'laydi barchasi sonli natural sonlar to'plamlari); keyin taqqoslash k-birlashmalarni bog`langan ikkilik sonlarni taqqoslash orqali amalga oshirish mumkin. Misolda C va C'1001011001 raqamlariga mos keladi2 = 60110 va 10100010112 = 65110, bu yana buni ko'rsatadi C oldin keladi C'. Biroq, bu raqam uni ko'rsatmoqchi bo'lgan raqam emas k-bilan kombinatsiya, chunki ko'p sonli ikkilik sonlar ko'tarilgan bitlardan farq qiladi k; ning nisbiy holatini topishni istaydi C (faqat) buyurtma qilingan ro'yxatida k-birlashmalar.

Kombinatsiyaning buyurtma berish joyi

Darajaning kombinatorial sanoq tizimiga bog'langan raqam k a k-birlashtirish C soni k- kombinatsiyalar qat'iyan kamroq C berilgan tartibda. Ushbu raqamni hisoblash mumkin C = { vk, ..., v2, v1 } bilan vk > ... > v2 > v1 quyidagicha. Tartibning ta'rifidan kelib chiqadiki, har biri uchun k-birlashtirish S qat'iyan kamroqC, noyob indeks mavjudmen shu kabi vmen yo'q S, esa vk, ..., vmen+1 mavjud S, va undan katta boshqa qiymat yo'q vmen bu. Shuning uchun ulardan birini guruhlash mumkin k-birlashmalar S mumkin bo'lgan qiymatlarga ko'ra 1, 2, ..., k ning menva har bir guruhni alohida hisoblang. Ning berilgan qiymati uchun men o'z ichiga olishi kerakvk, ..., vmen+1 yilda Sva qolganlari men elementlari S dan tanlanishi kerak vmen dan kam bo'lmagan manfiy tamsayılar vmen; bundan tashqari har qanday bunday tanlov a ga olib keladi k-birlashmalar S qat'iyan kamroqC. Mumkin bo'lgan tanlovlar soni , shuning uchun guruhdagi kombinatsiyalar soni men; umumiy soni k- kombinatsiyalar qat'iyan kamroq C keyin bo'ladi

va bu indeks (0 dan boshlab) ning C ning buyurtma qilingan ro'yxatida k-birlashmalar. Shubhasiz, har bir kishi uchun mavjud N ∈ N to'liq bitta k- indeks bo'yicha kombinatsiyaN ro'yxatda (taxmin k ≥ 1, chunki bu ro'yxat cheksiz), shuning uchun yuqoridagi dalil har birini isbotlaydi N yig‘indisi sifatida aynan bitta usulda yozilishi mumkin k berilgan shakldagi binomial koeffitsientlar.

Topish k- berilgan raqam uchun kombinatsiya

Berilgan formula berilganning leksikografik tartibida o'z o'rnini topishga imkon beradi k- darhol kombinatsiya. Topishning teskari jarayoni k- berilgan joyda kombinatsiya N biroz ko'proq ishni talab qiladi, ammo baribir to'g'ridan-to'g'ri. Leksikografik buyurtma ta'rifiga ko'ra, ikkitasi k-eng katta elementi bilan farq qiladigan kombinatsiyalar vk eng katta elementlarni taqqoslash bo'yicha buyurtma qilinadi, shundan kelib chiqadiki, ularning eng katta elementining belgilangan qiymatiga ega bo'lgan barcha kombinatsiyalar ro'yxatda qo'shni. Bundan tashqari, eng kichik kombinatsiya vk eng katta element bo'lgani kabi va u bor vmen = men - hamma uchun 1 ta men < k (bu birikma uchun iboradagi barcha atamalar bundan mustasno nolga teng). Shuning uchun vk eng katta raqam . Agar k > Ning qolgan elementlari k-birlashtirish shakli k − 1-songa mos keladigan kombinatsiya darajaning kombinatorial sanoq tizimida k − 1va shuning uchun xuddi shu tarzda davom ettirish orqali topish mumkin va k − 1 o'rniga N va k.

Misol

Deylik, kimdir 72-pozitsiyada 5-kombinatsiyani aniqlamoqchi. Ning ketma-ket qiymatlari uchun n = 4, 5, 6, ... 0, 1, 6, 21, 56, 126, 252, ... dir, shundan 72 dan oshmaydigan eng kattasi 56 ga teng, chunki n = 8. Shuning uchun v5 = 8, qolgan elementlar esa pozitsiyada 4 ta kombinatsiyani hosil qiladi 72 − 56 = 16. Ning ketma-ket qadriyatlari uchun n = 3, 4, 5, ... 0, 1, 5, 15, 35, ..., shundan 16 dan oshmaydigan eng kattasi 15 ga teng, chunki n = 6, demak v4 = 6. Joyida 3 ta kombinatsiyani qidirish uchun xuddi shunday davom eting 16 − 15 = 1 bitta topadi v3 = 3, bu yakuniy birlikni ishlatadi; bu belgilaydi va qolgan qiymatlar vmen bilan maksimal bo'lganlar bo'ladi , ya'ni vmen = men − 1. Shunday qilib biz 5 kombinatsiyasini topdik {8, 6, 3, 1, 0}.

Excelda milliy lotereya namunasi

Har biri uchun lotereya kombinatsiyalari v1 < v2 < v3 < v4 < v5 < v6 , ro'yxat raqami mavjud N 0 va qo'shib topish mumkin

Siz mumkin bo'lgan natijalar ro'yxatida Britaniya milliy lotereyasining 3,6,15,17,18,35 natijalarini topmoqchisiz. COMBIN (49,6) Excel funktsiyasi shuni ko'rsatadiki, natijalar soni 13983816 ni tashkil qiladi. Endi har biriga 3,6,15,17,18,35 raqamlarini qo'ygan bo'lsangiz va formulalarni COMBIN (49-3,6), COMBIN ( 49-6,5), KOMBIN (49-15,4), KOMBIN (49-17,3), KOMBIN (49-18,2), 49−35 ularning har biri ostida. Haqiqiy qiymatlar o'rniga uyali havolalardan foydalaning, haqiqiy qiymatlar o'qilishi uchun taqdim etiladi. Siz 9366819,962598,46376,4960,465,14 raqamlari qatorini olasiz. Bularni qo'shish ma'lum bir pozitsiyani ko'rsatishi mumkin edi 10381232. 14-raqamni olish uchun COMBIN (49-35,1) formulasidan foydalanishga hojat yo'qligini unutmang. Buni yolg'iz 49-35 ga olib tashlashingiz mumkin. 49-X 6 dan kichik bo'lsa, COMBIN funktsiyasi 0 ga qaytmaydi, agar siz #NUMni aylantirish uchun IFni ISNUMBER funktsiyasi bilan ishlatishingiz kerak! 0 ga.

Endi teskari muhandislik biroz ayyorroq. COMBIN natijasi uchun pozitsiya raqamidan kam yoki teng bo'lishi uchun maksimal argumentni topish uchun bitta IF hujayrasida 49 IF so'zlarini ishlatishingiz yoki hal qiluvchidan foydalanishingiz mumkin. Buning o'rniga 6 dan 49 gacha jadvalni ishlatamiz va natijada qator raqami argument va to'p raqami bo'lgan MATCH funktsiyasidan foydalanamiz. Agar siz ustunlarning sarlavhalarini 6 dan 1 gacha (B1: G1) kamayish tartibida va 1 dan 49 gacha (A2: A50) qator belgilarini o'sish tartibida qilsangiz (Excelda vertikal ko'tarilish yuqoridan pastgacha o'sayotgan raqamlarni bildiradi). Agar jadvalni COMBIN ($ A2, B $ 1) chap yuqori burchagidan boshlab to'ldirsangiz. $ belgilari indeks qiymatlari har doim sarlavha satri va yorlig'i ustunidan olinishiga ishonch hosil qiladi. #NUM o'rnini almashtiring! nol bilan. Siz shunga o'xshash narsalarni olishingiz kerak:

	6	5	4	3	2	11	0	0	0	0	0	12	0	0	0	0	1	23	0	0	0	1	3	34	0	0	1	4	6	45	0	1	5	10	10	56	1	6	15	20	15	67	7	21	35	35	21	78	28	56	70	56	28	89	84	126	126	84	36	910	210	252	210	120	45	1011	462	462	330	165	55	1112	924	792	495	220	66	12...49	13983816	1906884	211876	18424	1176	49

Endi siz oltita katakchadan iborat yangi qator yaratib, ularni har bir ustundagi eng katta qiymatlarni topadigan formulalar bilan to'ldirsangiz, ular ushbu pozitsiya raqamidan kam yoki unga teng: Birinchi katak = INDEX (B2: B50, MATCH (10381232) , B2: B50)), qolgan hujayralar bilan

INDEX (C2: C50, MATCH (10381232-SUM (avvalgi katakchalar), C2: C50)) ... INDEX (G2: G50, MATCH (10381232-SUM (oldingi kataklar), G2: G50))

Bu sizga allaqachon ko'rgan qiymatlar qatorini taqdim etadi 9366819,962598,46376,4960,465,14 Endi keyingi qatorda birinchi katak yozish = 49-MATCH (10381232, B2: B50) va shunga o'xshash

= 49-MATCH (10381232-9366819, C2: C50) ... = 49-MATCH (10381232-9366819-962598-46376-4960-465, G2: G50)

Haqiqiy qiymatlar o'rniga yana katakchalarga havolalardan foydalaning. Sizga 3,6,15,17,18,35 raqamli asl to'p raqamlari taqdim etilishi kerak.

Endi siz bitta = randbetween (1, combin (49,6)) dan yangi Lotereya raqamlari kombinatsiyasini yaratishingiz mumkin yoki trend mavjudligini bilish uchun avvalgi natijalarning ro'yxat pozitsiyasi raqamlarini ko'rib chiqishingiz mumkin.

Ilovalar

Barchasini ro'yxatlash yoki o'tish uchun kombinatsion raqamlar tizimidan foydalanish mumkin k- ma'lum bir cheklangan to'plamning kombinatsiyasi, ammo bu juda samarasiz usul. Darhaqiqat, ba'zilari berilgan k-kombinatsiyani raqamni a ga o'tkazgandan ko'ra to'g'ridan-to'g'ri leksikografik tartibda navbatdagi kombinatsiyani topish osonroq k- yuqorida ko'rsatilgan usul bo'yicha kombinatsiya. Keyingi kombinatsiyani topish uchun eng kichigini toping men ≥ 2 buning uchun vmen ≥ vi − 1+2 (agar bunday bo'lmasa) men, oling men = k+1); keyin oshiring vmen−1 bittadan va barchasini o'rnating vj bilan j < men − 1 ularning minimal qiymatiga j − 1. Agar k-kombinatsiya uning bilan ifodalanadi xarakterli vektor, bu bilan ikkilik qiymat k bitlar 1, keyin navbatdagi bunday qiymatni bitikli arifmetikadan foydalanib hech qanday tsiklsiz hisoblash mumkin: quyidagilar C ++ funktsiya oldinga siljiydi x bu qiymatga yoki qaytishga yolg'on:

// keyingi k birikmasini topingbool keyingi_kombinatsiya(imzosiz uzoq& x) // x ikkilikda x'01 ^ a10 ^ b shaklga ega deb taxmin qiling{  imzosiz uzoq siz = x & -x; // eng o'ng bitni ajratib oling 1; u = 0'00 ^ a10 ^ b  imzosiz uzoq v = siz + x; // so'nggi ketma-ket bo'lmagan bitni 0 o'rnating va o'ngga aniq; v = x'10 ^ a00 ^ b  agar (v==0) // keyin v, yoki x == 0 ga to'ldiriladi    qaytish yolg'on; // keyingi k kombinatsiyasini ifodalash mumkin emasligiga signal  x = v +(((v^x)/siz)>>2); // v ^ x = 0'11 ^ a10 ^ b, (v ^ x) / u = 0'0 ^ b1 ^ {a + 2} va x ← x'100 ^ b1 ^ a  qaytish to'g'ri; // muvaffaqiyatli yakunlash}

Bu deyiladi Gosper hack;[7]tegishli yig'ilish kodi 175-band sifatida tavsiflangan HAKMEM.

Boshqa tomondan to'g'ridan-to'g'ri ishlab chiqarish imkoniyati k- indeks bo'yicha kombinatsiya N foydali dasturlarga ega. Ta'kidlash joizki, bu tasodifiy ishlab chiqarishga imkon beradi k- birikmasi n- tasodifiy butun son yordamida elementlar to'plami N bilan , shunchaki ushbu raqamni mos keladiganga aylantirish orqali k-birlashtirish. Agar kompyuter dasturida har bir ma'lumot haqida jadval saqlanishi kerak bo'lsa k- berilgan cheklangan to'plamni kombinatsiyasi, indeksni hisoblash N kombinatsiya bilan bog'langan holda, jadvalga qidiruvsiz kirishga imkon beradi.

Shuningdek qarang

Adabiyotlar

  1. ^ Amaliy kombinatoriya matematikasi, Ed. E. F. Bekkenbax (1964), 27−30-betlar.
  2. ^ http://www.site.uottawa.ca/~lucia/courses/5165-09/GenCombObj.pdf
  3. ^ https://www.sagemath.org/doc/reference/sage/combinat/subset.html
  4. ^ Knut, D. E. (2005), "Barcha kombinatsiyalar va bo'limlarni yaratish", Kompyuter dasturlash san'ati, 4, fasl 3, Addison-Uesli, p.6-6, ISBN  0-201-85394-9.
  5. ^ Paskal, Ernesto (1887), Giornale di Matematiche, 25, 45-49-betlar
  6. ^ Makkaffri, Jeyms (2004), Matematik birikmaning mth leksikografik elementini yaratish, Microsoft Developer Network
  7. ^ Knut, D. E. (2009), "Bitwise hiyla-nayranglari va texnikasi", Kompyuter dasturlash san'ati, 4, fasl 1, Addison-Uesli, p. 54, ISBN  0-321-58050-8