logo

Permutacija ir derinimas Python

Python pateikia tiesioginius metodus, kaip rasti sekos permutacijas ir derinius. Šie metodai yra itertools pakete.

Permutacija

Pirmiausia importuokite itertools paketą, kad įdiegtumėte permutacijų metodą python. Šis metodas naudoja sąrašą kaip įvestį ir grąžina objektų sąrašą, kuriame yra visos sąrašo formos permutacijos.



Python3






# A Python program to print all> # permutations using library function> from> itertools>import> permutations> # Get all permutations of [1, 2, 3]> perm>=> permutations([>1>,>2>,>3>])> # Print the obtained permutations> for> i>in> list>(perm):> >print> (i)>



>

>

Išvestis:

(1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1)>

Laiko sudėtingumas: O(n!), kur n yra įvesties sąrašo ilgis. Taip yra todėl, kad yra n! n elementų permutacijas, o programa juos visus sugeneruoja ir išspausdina.
Pagalbinė erdvė: O(n!), nes programai reikia saugoti visus n! permutacijas atmintyje prieš juos išspausdindami. Tiksliau, perm kintamasis, sukurtas iškviečiant permutacijas ([1, 2, 3]), saugo visus n! permutacijas atmintyje kaip sąrašą.

Jis generuoja n! permutacijas, jei įvesties sekos ilgis yra n.
Jei norite gauti L ilgio permutacijas, įgyvendinkite tai tokiu būdu.

java branduolys java

Python3




java iteratorius žemėlapiui

# A Python program to print all> # permutations of given length> from> itertools>import> permutations> # Get all permutations of length 2> # and length 2> perm>=> permutations([>1>,>2>,>3>],>2>)> # Print the obtained permutations> for> i>in> list>(perm):> >print> (i)>

>

>

Išvestis:

(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)>

Šios programos laiko sudėtingumas yra O(n^r), kur n yra įvesties masyvo ilgis, o r yra generuojamų permutacijų ilgis.

Erdvės sudėtingumas taip pat yra O(n^r), nes prieš spausdinant visos permutacijos išsaugomos atmintyje.

Jis generuoja nCr * r! permutacijas, jei įvesties sekos ilgis yra n, o įvesties parametras yra r.

Derinys

Šis metodas paima sąrašą ir įvestį r kaip įvestį ir pateikia objektų sąrašą, sudarytą iš eilučių, kuriose yra visos galimos r ilgio kombinacijos sąrašo formoje.

Python3




# A Python program to print all> # combinations of given length> from> itertools>import> combinations> # Get all combinations of [1, 2, 3]> # and length 2> comb>=> combinations([>1>,>2>,>3>],>2>)> # Print the obtained combinations> for> i>in> list>(comb):> >print> (i)>

atvirkštinė eilutė java
>

>

Išvestis:

(1, 2) (1, 3) (2, 3)>

1. Deriniai išduodami įvesties leksikografine rūšiavimo tvarka. Taigi, jei įvesties sąrašas yra surūšiuotas, derinių eilutės bus sudarytos surūšiuota tvarka.

Python3




# A Python program to print all> # combinations of a given length> from> itertools>import> combinations> # Get all combinations of [1, 2, 3]> # and length 2> comb>=> combinations([>1>,>2>,>3>],>2>)> # Print the obtained combinations> for> i>in> list>(comb):> >print> (i)>

java rūšiavimo eilutės
>

>

Išvestis:

(1, 2) (1, 3) (2, 3)>

2. Elementai laikomi unikaliais pagal jų padėtį, o ne vertę. Taigi, jei įvesties elementai yra unikalūs, kiekvienoje kombinacijoje nebus pasikartojančių reikšmių.

Python3




# A Python program to print all combinations> # of given length with unsorted input.> from> itertools>import> combinations> # Get all combinations of [2, 1, 3]> # and length 2> comb>=> combinations([>2>,>1>,>3>],>2>)> # Print the obtained combinations> for> i>in> list>(comb):> >print> (i)>

>

>

Išvestis:

(2, 1) (2, 3) (1, 3)>

3. Jei norime sujungti tą patį elementą su tuo pačiu elementu, naudojame kombinacijas_with_replacement.

Python3


.tif failą



# A Python program to print all combinations> # with an element-to-itself combination is> # also included> from> itertools>import> combinations_with_replacement> # Get all combinations of [1, 2, 3] and length 2> comb>=> combinations_with_replacement([>1>,>2>,>3>],>2>)> # Print the obtained combinations> for> i>in> list>(comb):> >print> (i)>

>

>

Išvestis:

(1, 1) (1, 2) (1, 3) (2, 2) (2, 3) (3, 3)>