Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

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

661 vues

Publié le

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

Publié dans : Données & analyses
  • Soyez le premier à commenter

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

  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

×