В комбінаториці, розміщенням із n елементів по m, або впорядкованою (n, m) вибіркою із множини M (потужність n, m≤n) називають довільний кортеж що складається із m попарно відмінних елементів. Розміщення можна розглядати як різнозначну функцію f: , для якої .
Кількість розміщень із n по m позначається як або і обчислюється за такою формулою:
Розміщення з повтореннями
Розміщенням з повтореннями із n елементів по m або впорядкованою (n, m) вибіркою з поверненнями називається довільний кортеж елементів множини M, для якого |M| = n.
Кількість можливих розміщень з повтореннями із n елементів по m дорівнює n піднесене до степеня m:
Наприклад, із цифр 1, 2, 3, 4 можна скласти трьохзначних числа.
Приклад алгоритму отримання розміщень з повторюваннями на С
#include <stdio.h> #include <math.h> int main(int argc, char* argv[]) { const int len = 4;// довжина розміщення char elements[] = {'0', '1'};// елементи в розміщенні int els = (int)(sizeof(elements) / sizeof(char)); // кількість розміщень int permutations = (unsigned int) pow((double)els, len); char **table = new char *[permutations]; for(int i = 0; i < permutations; ++i) table[i] = new char[4]; for (int i = 0; i < len; i++) { int t = (int) pow((double)els, i); for (int position_i = 0; position_i < permutations;) for (int el_num = 0; el_num < els; el_num++) for (int repeats = 0; repeats < t; repeats++) { table[position_i][i] = elements[el_num]; position_i++; } } // виведення результату у консоль for (int i = 0; i < permutations; i++) { printf("%3d - ", i + 1); for (int j = 0; j < len; j++) printf("%c ", table[i][j]); printf("\n"); } return 0; }
Приклад алгоритму отримання розміщень з повторюваннями на С#
/// <summary> /// /// </summary> /// <param name="length">Довжина розміщення</param> /// <param name="alphabet">Абетка</param> /// <returns></returns> public IEnumerable<string> Bruteforce(int length, string alphabet) { if (length > 0 && alphabet != null) { int[] indexes = new int[length]; int index = 0; int iteration = 0; // кількість розміщень var permutations = Math.Pow(alphabet.Length, length); while (iteration < permutations) { var target = alphabet[index].ToString(); // перераховуються перестановки for (int i = 1; i < length; i++) { if (indexes[i - 1] >= alphabet.Length) { indexes[i]++; indexes[i - 1] = 0; } target += alphabet[indexes[i] < alphabet.Length ? indexes[i] : 0]; } indexes[0] = ++index; if (index >= alphabet.Length) index = 0; // додається результат до колекції yield return target; iteration++; } } }
Джерела інформації
- Судоплатов С. В., Овчинникова Е. В. (2002). Элементы дискретной математики. НГТУ. ISBN .
Див. також
Це незавершена стаття з математики. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U Vikipediyi ye statti pro inshi znachennya cogo termina Rozmishennya V kombinatorici rozmishennyam iz n elementiv po m abo vporyadkovanoyu n m vibirkoyu iz mnozhini M potuzhnist n m n nazivayut dovilnij kortezh a i 1 a i 2 a i m displaystyle a i 1 a i 2 dots a i m sho skladayetsya iz m poparno vidminnih elementiv Rozmishennya mozhna rozglyadati yak riznoznachnu funkciyu f 1 2 m M displaystyle 1 2 dots m to M dlya yakoyi f j a i j displaystyle f j a i j Vsi 60 variantiv rozmishennya 3 iz 5 Kilkist rozmishen iz n po m poznachayetsya yak A n m displaystyle A n m abo P n m displaystyle P n m i obchislyuyetsya za takoyu formuloyu A n m n n 1 n m 1 n n m displaystyle A n m n n 1 dots n m 1 frac n n m Rozmishennya z povtorennyamiRozmishennyam z povtorennyami iz n elementiv po m abovporyadkovanoyu n m vibirkoyu z povernennyami nazivayetsya dovilnij kortezh a 1 a m displaystyle a 1 dots a m elementiv mnozhini M dlya yakogo M n Kilkist mozhlivih rozmishen z povtorennyami iz n elementiv po m dorivnyuye n pidnesene do stepenya m P n m n m displaystyle hat P n m n m Napriklad iz cifr 1 2 3 4 mozhna sklasti P 4 3 4 3 64 displaystyle hat P 4 3 4 3 64 trohznachnih chisla Priklad algoritmu otrimannya rozmishen z povtoryuvannyami na S include lt stdio h gt include lt math h gt int main int argc char argv const int len 4 dovzhina rozmishennya char elements 0 1 elementi v rozmishenni int els int sizeof elements sizeof char kilkist rozmishen int permutations unsigned int pow double els len char table new char permutations for int i 0 i lt permutations i table i new char 4 for int i 0 i lt len i int t int pow double els i for int position i 0 position i lt permutations for int el num 0 el num lt els el num for int repeats 0 repeats lt t repeats table position i i elements el num position i vivedennya rezultatu u konsol for int i 0 i lt permutations i printf 3d i 1 for int j 0 j lt len j printf c table i j printf n return 0 Priklad algoritmu otrimannya rozmishen z povtoryuvannyami na S lt summary gt lt summary gt lt param name length gt Dovzhina rozmishennya lt param gt lt param name alphabet gt Abetka lt param gt lt returns gt lt returns gt public IEnumerable lt string gt Bruteforce int length string alphabet if length gt 0 amp amp alphabet null int indexes new int length int index 0 int iteration 0 kilkist rozmishen var permutations Math Pow alphabet Length length while iteration lt permutations var target alphabet index ToString pererahovuyutsya perestanovki for int i 1 i lt length i if indexes i 1 gt alphabet Length indexes i indexes i 1 0 target alphabet indexes i lt alphabet Length indexes i 0 indexes 0 index if index gt alphabet Length index 0 dodayetsya rezultat do kolekciyi yield return target iteration Dzherela informaciyiSudoplatov S V Ovchinnikova E V 2002 Elementy diskretnoj matematiki NGTU ISBN 5 7782 0332 2 Div takozhPortal Matematika Perestanovka Pidstanovka Kombinaciya Ce nezavershena stattya z matematiki Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi