Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 17. 11. 2011 05:30 — Editoval johnsmithx (17. 11. 2011 06:55)

johnsmithx
Zelenáč
Příspěvky: 12
Reputace:   
 

Jak vypočítat počet kombinací z omezené množiny

Dobrý den (ráno, případně noc),

mám takový hloupý problém a nevím si rady, jak ho vyřešit. Nedávno jsem naprogramoval software pro různé manipulace s kombinacemi, pak jsem implementoval blacklisting, aby bylo možné kombinace obsahující zadaná čísla zahodit a dnes jsem implementoval opak - whitelisting, tedy aby bylo možné vybrat pouze kombinace obsahující zadaná čísla a zahodit všechny ostatní. S implementací problém nebyl, ale u toho whitelistingu neumím dopředu vypočítat, kolik těch kombinací bude. Umím je vygenerovat, takže pak jejich počet umím i tupě sečíst dohromady, ale nevím, podle jakého vzorce bych mohl dopředu vypočítat, kolik jich bude. Snad vše objasní následující schématické zobrazení:

Code:

Sloupec A: všechny 3-kombinace z 1..5
    počet kombinací = K(3,5) = 5! / (3! * 2!) = 120 / 12 = 10

Sloupec B: blacklist čísla "2" (tj. všechny kombinace, které neobsahují číslo "2").
    počet kombinací = K(3,4) = 4! / (3! * 1!) =  24 /  6 =  4

Sloupec C: whitelist čísla "1" (tj. všechny kombinace, které obsahují číslo "1").
    počet kombinací =                ??????              =  6

Sloupec D: blacklist čísla "2" a zároveň whitelist čísla "1".
    počet kombinací =                ??????              =  3


       A            B            C            D

 1.  1,2,3                 1.  1,2,3
 2.  1,2,4                 2.  1,2,4
 3.  1,2,5                 3.  1,2,5
 4.  1,3,4    1.  1,3,4    4.  1,3,4    1.  1,3,4
 5.  1,3,5    2.  1,3,5    5.  1,3,5    2.  1,3,5
 6.  1,4,5    3.  1,4,5    6.  1,4,5    3.  1,4,5
 7.  2,3,4            
 8.  2,3,5            
 9.  2,4,5            
10.  3,4,5    4.  3,4,5

Sloupec A je jasný, všechny 3-kombinace z množiny 5 prvků. Celkem 10 kombinací.
Obecný vzorec K(k,n).

Sloupec B je taky jasný, všechny kombinace bez jednoho čísla, to je vlastně jinými slovy všechny kombinace z množiny o 1 prvek menší. Celkem 4 kombinace.
Obecný vzorec pro b blacklistovaných prvků by byl K(k,n-b), kde b nesmí být větší než n-k.

Sloupec C - pouze kombinace, které obsahují konkrétní prvek. Vím, že takových kombinací je 6, ale nevím, jak se k tomu číslu dostat.

Sloupec D kumuluje podmínky sloupců B a C. Taky nevím, jak se dostat k číslu 3, ale předpokládám, že až budu vědět, jak vyřešit C, tak budu i vědět D.

Ještě jednou se omlouvám za asi hloupý dotaz :-)

//EDIT: tak po půlhodině tupého zírání na výše uvedenou tabulku a druhé půlhodině nevěřícného ověřování jsem asi došel k řešení.
Ono se vlastně todle (tabulka C):

1,2,3
1,2,4
1,2,5
1,3,4
1,3,5
1,4,5

dá chápat jako todle:

1,2
1,3
1,4
2,3
2,4
3,4

což jsou všechny 2-kombinace ze 4 prvků. Na to by šlo koukat jako na podmnožinu, kde je o 1 méně prvků a jsou z nich vytvořeny (k-1)-kombinace.

Takže obecně by se to snad dalo vyjádřit tak, že pokud chci ze všech k-kombinací z množiny n prvků vybrat pouze takové kombinace, které obsahují pouze vybrané prvky (jejichž počet je w, přičemž w nesmí být větší než k), tak to lze vypočítat jako počet (k-w)-kombinací z množiny (n-w) prvků, neboli K(k-w,n-w). Kdyby w se rovnalo k (tedy ve výsledku by měla být pouze jedna jediná kombinace), tak by se to počítalo jako n! / ( 0! * (n-0)! ) = n! / n! = 1, což souhlasí.

A tím pádem řešení pro sloupec D, který kombinuje dohromady blacklisting i whitelisting by byl obecný vzorec K(k-w,n-b-w), což by v tomto konkrétním případě bylo K(2,3) = 3, což také souhlasí.

Tak jsem si asi odpověděl sám, hm, omlouvám se za zbytečné vlákno :-( Jen bych poprosil, kdyby mi to pro jistotu někdo mohl zkontrolovat, že si nepletu pojmy s dojmy.

Offline

  • (téma jako vyřešené označil(a) johnsmithx)

#2 17. 11. 2011 08:20

zdenek1
Administrátor
Místo: Poděbrady
Příspěvky: 12436
Reputace:   897 
Web
 

Re: Jak vypočítat počet kombinací z omezené množiny

↑ johnsmithx:
kombinace obsahující prvek 1 = všechny kombinace - kombinace neobsahující prvek 1
ve tvém konkrétním případě
${5\choose3}-{4\choose3}$


Pořádek je pro blbce, inteligent zvládá chaos!

Offline

 

#3 17. 11. 2011 12:15 — Editoval johnsmithx (17. 11. 2011 13:03)

johnsmithx
Zelenáč
Příspěvky: 12
Reputace:   
 

Re: Jak vypočítat počet kombinací z omezené množiny

↑ zdenek1:

Díky, to je další možnost, jak to vypočítat. Že jsem to z té tabulky nevykoukal, když to přímo bije do očí, že 6 = 10 - 4..

Ale to moje řešení ${4\choose2}$ je kratší.. Každopádně dává to stejný výsledek jako tvé řešení. ${5\choose3}-{4\choose3} = {4\choose2}$


Tedy obecně by zřejmě mělo platit: ${n \choose k}-{n-1 \choose k} = {n-1 \choose k-1}$

..což je vlastně ${n \choose k} = {n-1 \choose k-1} + {n-1 \choose k}$, což je prej nějaká rekurzivní formule, aspoň to píšou tady. No to je vtipný, o kombinacích vůbec nich nevím a vymyslel jsem polovinu vzorce :-)
Tak díky, todle je vyřešeno, teď hurá na další problém.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson