Variace (kombinatorika)
Variace k-té třídy z n prvků je každá uspořádaná k-tice vytvořená z celkového počtu n prvků, přičemž při výběru záleží na pořadí jednotlivých prvků. Rozlišujeme variace s opakováním a bez opakování. Pro výpočet hodnoty je používán faktoriál.
Variace bez opakování
- Variace bez opakování je k-členná skupina utvořená z daných n prvků tak, že v nich záleží na pořadí a žádný z daných prvků se v ní neopakuje.
- Počet k-členných variací z n prvků: pro
- například: 2členná variace ze 3 prvků a, b, c: (ab), (ba), (ac), (ca), (bc), (cb)
Variace s opakováním
- Variace s opakováním je uspořádaná k-tice z n prvků sestavená tak, že každý se v ní vyskytuje nejvýše k-krát. Opět záleží na pořadí.
- Počet k-členných variací s opakováním z n prvků: platí i pro
- například: 2členná variace s opakováním ze 3 prvků a, b, c: (aa), (ab), (ac), (ba), (bb), (bc), (ca), (cb), (cc)
Příklady
Příklad 1
Kolik trojciferných čísel je možné sestavit z číslic 1, 2, 3, 4, jestliže:
a) se v čísle každá cifra může vyskytovat nejvýše jednou
b) se v čísle cifry mohou opakovat
Příklad 2
Kolik je možností pro obsazení 1., 2. a 3. místa v závodě s 20 účastníky?
Příklad 3
Posádka lodi potřebuje k dorozumívání vytvořit 50 různých signálů. Budou jim k tomu stačit 4 různobarevné praporky?
- jednopraporkové signály:
- dvoupraporkové signály:
- třípraporkové signály:
- čtyřpraporkové signály:
- celkem lze vytvořit: signálů
- Na vytvoření 50 signálů budou 4 různobarevné praporky stačit.
Příklad 4
Kolika způsoby můžete nastavit šestimístný číselný kód trezoru?
Algoritmus
Algoritmus pro nalezení všech variací znaků (s opakováním, v jazyku Java)
public static List<String> variaceSOpakovanim(int trida, String pouzitelneZnaky) {
List<String> list = new ArrayList<String>((int) Math.pow(pouzitelneZnaky.length(), trida)/*(1)*/);
if (trida == 0) {
list.add(""); /*(2)*/
} else {
List<String> l = variaceSOpakovanim(trida - 1, pouzitelneZnaky);
for (char c : pouzitelneZnaky.toCharArray()) { /*(3)*/
for (String s : l) {
list.add(c + s); /*(4)*/
}
}
}
return list;
}
- Počet variací s opakováním je dán jako počet použitelných prvků umocněný na třídu variace.
- Variace nulté třídy je právě jedna: prázdná množina.
- Variace s opakováním se dá vnímat jako kartézský součin množiny použitelných prvků s množinou variací ze stejných použitelných prvků, ale s třídou o jednu menší. Z toho vyplývá použití rekurze.
- Přidá do výstupního (vraceného) seznamu příslušný prvek, vzniklý spojením jednoho (každého) prvku s jednou (každou) variací nižší třídy.
Literatura
- VOŠICKÝ, Zdeněk. Matematika v kostce: pro střední školy. Havlíčkův Brod: Fragment, 2007 (1. vydání). ISBN 978-802-5301-913.