Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Заявки за намиране на пермутации, вариации и комбинации

663 views

Published on

Задача. Да се напише заявка за намиране на:
а) всички пермутации без повторения на n елемента;
б) всички пермутации с повторения на n елемента;
в) всички вариации без повторения на k елемента над n-елементно множество;
г) всички вариации с повторения на k елемента над n-елементно множество;
д) всички комбинации без повторения на k елемента над n-елементно множество;
е) всички комбинации с повторения на k елемента над n-елементно множество.

Published in: Data & Analytics
  • Be the first to comment

Заявки за намиране на пермутации, вариации и комбинации

  1. 1. ЗАЯВКИ ЗА НАМИРАНЕ НА ПЕРМУТАЦИИ, ВАРИАЦИИ И КОМБИНАЦИИ доц. д-р Цветанка Георгиева-Трифонова
  2. 2. ЗАЯВКИ ЗА НАМИРАНЕ НА ПЕРМУТАЦИИ, ВАРИАЦИИ И КОМБИНАЦИИ  Задача. Да се напише заявка за намиране на:  а) всички пермутации без повторения на n елемента;  б) всички пермутации с повторения на n елемента;  в) всички вариации без повторения на k елемента над n- елементно множество;  г) всички вариации с повторения на k елемента над n- елементно множество;  д) всички комбинации без повторения на k елемента над n-елементно множество;  е) всички комбинации с повторения на k елемента над n- елементно множество. 22Цветанка Георгиева
  3. 3. ВЪВЕЖДАНЕ НА ЕЛЕМЕНТИТЕ  Нека е дадена таблица itemtable с една колона item: CREATE TABLE itemtable (item varchar(10)); -- въвеждане на елементите DECLARE @n int; SET @n=0; WHILE @n < 6 BEGIN SET @n = @n + 1; INSERT INTO itemtable (item) VALUES (@n); END; 33Цветанка Георгиева
  4. 4. ПЕРМУТАЦИИ БЕЗ ПОВТОРЕНИЯ WITH perm (item, level) при @n=3 AS ( SELECT CAST(item AS varchar(50)), 1 FROM itemtable UNION ALL SELECT CAST(perm.item + ',' + i.item AS varchar(50)), level + 1 FROM itemtable i, perm WHERE level < @n AND CHARINDEX(i.item, perm.item) = 0 ) -- извеждане на пермутациите SELECT item FROM perm WHERE level = @n ORDER BY item; 44Цветанка Георгиева
  5. 5. ПЕРМУТАЦИИ БЕЗ ПОВТОРЕНИЯ (2)  Инициализиране, нека @n=3 SELECT CAST(item AS varchar(50)), 1 FROM itemtable  I. SELECT CAST(perm.item + ',' + i.item AS varchar(50)), level + 1 FROM itemtable i, perm WHERE level < @n AND CHARINDEX(i.item, perm.item) = 0 )  Резултатът е празното множество. 55Цветанка Георгиева
  6. 6. ПЕРМУТАЦИИ БЕЗ ПОВТОРЕНИЯ (3)  II.  itemtable perm × SELECT CAST(perm.item + ',' + i.item AS varchar(50)), level + 1 FROM itemtable i, perm WHERE level < @n AND CHARINDEX(i.item, perm.item) = 0 ) 66Цветанка Георгиева
  7. 7. ПЕРМУТАЦИИ БЕЗ ПОВТОРЕНИЯ (4)  III.  itemtable perm × SELECT CAST(perm.item + ',' + i.item AS varchar(50)), level + 1 FROM itemtable i, perm WHERE level < @n AND CHARINDEX(i.item, perm.item) = 0 ) 77Цветанка Георгиева
  8. 8. ПЕРМУТАЦИИ БЕЗ ПОВТОРЕНИЯ (5)  IV.  itemtable perm × Ø SELECT CAST(perm.item + ',' + i.item AS varchar(50)), level + 1 FROM itemtable i, perm WHERE level < @n AND CHARINDEX(i.item, perm.item) = 0 ) 88Цветанка Георгиева
  9. 9. ПЕРМУТАЦИИ С ПОВТОРЕНИЯ WITH perm (item, level) AS ( SELECT CAST(item AS varchar(50)), 1 FROM itemtable UNION ALL SELECT CAST(perm.item + ',' + i.item AS varchar(50)), level + 1 FROM itemtable i, perm WHERE level < @n ) -- извеждане на пермутациите SELECT item FROM perm WHERE level = @n ORDER BY item; 99Цветанка Георгиева
  10. 10. ВАРИАЦИИ БЕЗ ПОВТОРЕНИЯ DECLARE @k int; SET @k=2; -- вариации без повторения WITH variations (item, level) AS ( SELECT CAST(item AS varchar(50)), 1 FROM itemtable UNION ALL SELECT CAST(v.item + ',' + i.item AS varchar(50)), level + 1 FROM itemtable i, variations v WHERE level < @k AND CHARINDEX(i.item, v.item) = 0 ) -- извеждане на вариациите SELECT item FROM variations WHERE level=@k ORDER BY item; 1010Цветанка Георгиева
  11. 11. ВАРИАЦИИ С ПОВТОРЕНИЯ DECLARE @k int; SET @k=2; -- вариации с повторения WITH variations (item, level) AS ( SELECT CAST(item AS varchar(50)), 1 FROM itemtable UNION ALL SELECT CAST(v.item + ',' + i.item AS varchar(50)), level + 1 FROM itemtable i, variations v WHERE level < @k ) -- извеждане на вариациите SELECT item FROM variations WHERE level=@k ORDER BY item; 1111Цветанка Георгиева
  12. 12. КОМБИНАЦИИ БЕЗ ПОВТОРЕНИЯ DECLARE @k int; SET @k = 2; -- комбинации без повторения WITH comb (item, level) AS ( SELECT CAST(item AS varchar(50)), 1 FROM itemtable UNION ALL SELECT CAST(comb.item + ',' + i.item AS varchar(50)), level + 1 FROM itemtable i, comb WHERE level < @k AND i.item>RIGHT(comb.item, 1) ) -- извеждане на комбинациите SELECT item FROM comb WHERE level=@k ORDER BY item; 1212Цветанка Георгиева
  13. 13. КОМБИНАЦИИ С ПОВТОРЕНИЯ DECLARE @k int; SET @k = 2; -- комбинации с повторения WITH comb (item, level) AS ( SELECT CAST(item AS varchar(50)), 1 FROM itemtable UNION ALL SELECT CAST(comb.item +','+ i.item AS varchar(50)), level + 1 FROM itemtable i, comb WHERE level < @k AND i.item>=RIGHT(comb.item, 1) ) -- извеждане на комбинациите SELECT item FROM comb WHERE level=@k ORDER BY item; 1313Цветанка Георгиева
  14. 14. ЗАЯВКИ ЗА НАМИРАНЕ НА ПЕРМУТАЦИИ, ВАРИАЦИИ И КОМБИНАЦИИ  Ако n е двуцифрено число:  елементите се въвеждат, като се добавя 0 пред едноцифрните елементи;  в този случай за комбинациите се използва RIGHT(comb.item, 2).  Аналогично за трицифрени и т.н. числа. 1414Цветанка Георгиева
  15. 15. 1515Цветанка Георгиева Цветанка Георгиева-Трифонова, 2017 Някои права запазени. Презентацията е достъпна под лиценз Creative Commons, Признание-Некомерсиално-Без производни, https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode

×