Backtraking pentru funcţii InjectiveSurjectiveBijective
-
Upload
andrei-oldan -
Category
Documents
-
view
9 -
download
0
description
Transcript of Backtraking pentru funcţii InjectiveSurjectiveBijective
-
5/28/2018 Backtraking pentru func ii InjectiveSurjectiveBijective
Aplica ii backtraking pentru funcii injective, surjective, bijective
Funcii injective. Aranjamente.
Definiie
Fie f : A B o funcie. f este o funcie injectiv sau f este o injecie, dacpentru oricare douelemente x i y ale lui A, xy, f(x)f(y).
S se genereze toate funciile injective f:{a1,a2..am}->{b1,b2..bn}, unde card(A)=m, card(B)=nO soluie este format din m elemente (nr.elementelor mulimii A) iar fiecare element din soluie
reprezint valoareafunciei f(k) (un element din B).
Problema se reduce la generarea tuturor Anm (n>=m)
Ex.11.S se genereze toate funciile injective f:{a1,a2..am}->{b1,b2..bn} cu proprietatea c
f(ai)*f(ai+1) >= 0 .Exemplu pentru a=(1,2,3) i b=(-1,-2,3,-4,5)
Soluiile (6) vor fi
f(1)=-1 f(2)=-2 f(3)=-4f(1)=-1 f(2)=-4 f(3)=-2
f(1)=-2 f(2)=-1 f(3)=-4f(1)=-2 f(2)=-4 f(3)=-1f(1)=-4 f(2)=-1 f(3)=-2f(1)=-4 f(2)=-2 f(3)=-1
Rezolvare :Presupunem cvectorul soluiei este V, atunci orice V[k] reprezint valoarea funciei f(k)Pe nivel al stivei , V[k] va lua valori din {b1,b2..bn}.Cum nu exist o relaie de ordine ntre elementelemulimii B, atunci n V[k] vom reine poziia elementului din B.Conform restriciilor din enun validarea presupune ca n afara faptului c elementele trebuie s fie
distincte trebuie s verificm i c f(ai)*f(ai+1) >= 0 ; pe orice nivel al stivei elementul este invaliddac (b[v[i]]*b[v[i-1]]{b1,b2..bn}, unde card(A)=m, card(B)=n. Osoluie este format din melemente (nr.elementelor mulimii A), fiecare soluie .Problema se reduce la generarea produsului cartezian B1xB2x.xBm ( B
m)* (Atenie ! algoritm
exponenial datorit numrului mare deelemente ale produsului cartezian )Vor fi considerate soluii numai cele care conin toate elementele din mulimea B.(dup generareaunei posibile soluii verificai nainte de afiare!!!)
Ex.2 . S se genereze toate funciile surjective f :{a1,a2..am}->{b1,b2..bn} astfel nct
-
5/28/2018 Backtraking pentru func ii InjectiveSurjectiveBijective
Se consider soluie dac
-
5/28/2018 Backtraking pentru func ii InjectiveSurjectiveBijective