Documente Academic
Documente Profesional
Documente Cultură
1 Excursie în Banat
Harta din gura 1 de mai jos, ilustreaz principalele oras, e s, i sate din Banat, precum s, i
leg turile rutiere s, i feroviare dintre localit t, i.
1. Pornind de la harta de mai sus, realizat, i un graf care s modeleze legaturile rutiere
dintre localit t, i. Analog construit, i un alt graf care s ilustreze leg turile feroviare
dintre localit t, i.
1
Universitatea de Vest din Timi³oara
Departamentul de Informatic Aritoni Ovidiu
2. Singurele cai navigabile din Banat sunt reprezentate de Tisa, canalul Bega (Begejski
Canal) s, i Dun re. Realizat, i un graf care s cont, in toate leg turile navigabile dintre
oras, e.
3. Alc tuit, i o list de obiective turistice din Banat care intent, ionat, i s le vizitat, i.
Putet, i folosi ca surs de inspirat, ie site-ul http://www.intercultural.ro/. Intro-
ducet, i în aceast list atât obiective de pe teritoriul României cât s, i de pe teritoriul
Serbiei s, i al Ungariei.
5. Realizat, i o clas Rut , conform diagramei de clas , din gura 2de mai jos. Aceast
clas se va realiza în pachetul main. Constructorul clasei va seta pentru toate
obiectele atributul skip al clasei pe valoarea false .
Ruta
#localitatePlecare: String
#localitateSosire: String
#distanta: int
#skip: boolean
#fluvial: boolean
#rutier: boolean
#feroviar: boolean
+getLocalitatePlecare(): String
+setLocalitatePlecare(localitate:String): void
+getLocalitateSosire(): String
+setLocalitateSosire(localitate:String): void
+getDistanta(): int
+setDistanta(dist:int): void
+isTrue(): boolean
+setSkip(skip:boolean): void
+Ruta(localitateStart:String,localitateEnd:String,
dist:int,rutier:boolean,feroviar:boolean,
fluvial:boolean)
+equals(obj:Object): boolean
+isFluvial(): boolean
+isRutier(): boolean
+isFeroviar(): boolean
6. În cadrul pachetului main creat, i o clas MotorCautare as, a cum este prezentat mai
jos:
2
Universitatea de Vest din Timi³oara
Departamentul de Informatic Aritoni Ovidiu
7. În cadrul clasei MotorCautare create anterior creat, i o metod adaugaRuta, asa cum
,
10. Metoda match caut in baza de date a aplicatiei daca exista rute directe intre cele
doua orase furnizate ca parametrii. În cazul in care exista rute intre cele doua orase
se returneaza distanta, iar in caz contrar returneaz 0 (zero). O dat ce o anumit
rut a fost gasit , inseamn c corespunde solut, iei. As, adar atributul skip al acestei
rute va setat pe true, pentru a preveni reutilizarea acestei rute in construirea
solutiei nale.
3
Universitatea de Vest din Timi³oara
Departamentul de Informatic Aritoni Ovidiu
6 d i s t =r u t e [ i ] . d i s t a n t a ;
7 r u t e [ i ] . s k i p=t r u e ;
8 }
9 }
10 return dist ;
11 }
11. Construit, i o alt metod , nd(localitate), care s identice toate rutele care pornesc
dintr-o anumit localitate. De exemplu din localitatea Jimbolia pornesc urm toarele
rute: Jimbolia - Timis, oara, Jimbolia - Srpska Krnja, Jimbolia - Kikinda, Jimbolia -
Sânnicolaul Mare, Jimbolia - Lovrin, Jimbolia - Biled s, i Jimbolia - Cenei. Metoda
nd(Jimbolia) va trebui s genereze un drum dintre acestea care nu a fost folosit
anterior.
12. Realizati o metod calculRuta care va determina drumul de leg tur dintre dou
localit t, i furnizate ca parametru. Scheletul acestei metode este cel de mai jos. Se
va aplica strategia de c utare în adâncime:
4
Universitatea de Vest din Timi³oara
Departamentul de Informatic Aritoni Ovidiu
13. Realizati o clasa Main, care va contine o metod main, unde vet, i testa funct, ionalitatea
aplicat, iei create.
De asemenea realizat, i un program care s listeze toate rutele existente între dou localit t, i
de pe hart . La aplicarea algoritmilor de c utare informat, i sau neinformat, i, se returneaz
o singur rut . Trebuie s modicat, i unul dintre programele obt, inute anterior, pentru a
obt, ine toate rutele posibile dintre dou drumuri.
Indicatie: , în frameworkul ProblemSolving pus la dispozit, ie exist implement ri pentru
tot, i algoritmii de c utare, atât informat, i cât s, i neinformat, i.
Pentru a implementa în mod rapid problemele specice de c utare în spat, iul st rilor a
fost dezvoltat un framework. Acest framework cont, ine trei pachete:
• Pachetul algorithms, care cont, ine clase care încapsuleaz tot, i algoritmii de c utare
neinformat, i s, i informat, i.
• Pachetul stacks. Acest pachet este un pachet utilitar, care denes, te o clas template
Stack s, i un Iterator pentru aceasta.
• Pachetul templates, cont, ine clase pentru denirea conceptului de stare s, i operator.
5
Universitatea de Vest din Timi³oara
Departamentul de Informatic Aritoni Ovidiu
• clase care s modeleze operatorii specici problemei c nilor cu ap : Fill1, Fill2,
Empty1, Empty2, Empty_1to2, Empty_2to1.
1 package watercups . s t a t e s ;
2
3 import java . u t i l . ArrayList ;
4 import templates . State ;
5
6 public class Wa t er C up S ta t e {
7 protected int capacity1 ;
8 protected int capacity2 ;
9
10 }
(a) un constructor implicit care va crea starea init, ial , adic va seta valoarea
atributelor capacity1 s, i capacity2 la zero.
(e) metoda equals. Spunem c dou st ri A s, i B sunt identice dac s, i numai
volumul de ap este acelas, i pentru prima can atât în starea A cât s, i în starea
B, respectiv este acelas, i volum de ap în cea de-a doua can atât în starea A
cât s, i în starea B.
6
Universitatea de Vest din Timi³oara
Departamentul de Informatic Aritoni Ovidiu
5. Realizat, i o metod de clas nalStates care va returna mult, imea tuturor st rilor
nale care trebuiesc îndeplinite de c tre problem . Aceast metod returneaz o
list care va cont, ine aceste st ri:
6. Se va construi o list de st ri fStates, s, i se va ad uga acestei liste ecare din st rile
nale: (0,2), (1,2), (2,2), (3,2).
package watercups . s t a t e s ;
8. În clasa WaterCupState creat, i o metod initialState care va returna starea init, ial
specic problemei c nilor cu ap .
7
Universitatea de Vest din Timi³oara
Departamentul de Informatic Aritoni Ovidiu
11. Ordinea operatorilor în cazul problemei c nilor cu ap este urm toarea: umplere_cana1,
umplere_cana2, golire_cana1, golire_cana2, golire_din_cana1_in_cana2, golire_din_cana2_in_ca
As, adar operatorul umpler_cana1 va avea num rul de ordine 1, deci metoda getOp-
eratorNumber din clasa Fill1 va reurna valoarea 1:
12. În continuare vom deni metoda available a clasei Fill1. Aceast metod verc
dac asupra st rii furnizate ca parametru se poate aplica operatorul Fill1. Prima
can poate umplut doar dac în ea exist mai put, in de trei litri.
public boolean a v a i l a b l e ( W a te r Cu p St a te s ){
if ( s . g e t C a p a c i t y 1 () <3)
return true ;
else
return false ;
}
13. Ultima etap este scrierea metodei execute( ) care denes, te comportamentul oper-
atorului Fill1. Deoarece în urma execut, iei acestui operator se obt, ine o nou stare,
metoda execute( ) va construi un nou obiect de tip WaterCupState, as, a cum este
indicat mai jos:
public W a te r Cu p St a te e x e c u t e ( Wa t e rC u pS t at e s ){
return new W at e rC u pS t at e ( 3 , s . g e t C a p a c i t y 2 ( ) ) ;
}
1 package watercups . o p e r a t o r s ;
2
3 import w a t e r c u p s . s t a t e s . W at e rC u pS t at e ;
4 import templates . Operator ;
8
Universitatea de Vest din Timi³oara
Departamentul de Informatic Aritoni Ovidiu
5
6 public static class Fill1 implements O p e r a t o r <WaterCupState
>{
7
8 public int getOperatorNumber ( ) {
9 return 1;
10 }
11
12 public Wa t er C up S ta t e e x e c u t e ( Wa t er C up S ta t e s ){
13 return new W at e rC u pS t at e ( 3 , s . g e t C a p a c i t y 2 ( ) ) ;
14 }
15
16 public boolean a v a i l a b l e ( W a te r Cu p St a te s ){
17 if ( s . g e t C a p a c i t y 1 ( ) <3)
18 return true ;
19 else
20 return false ;
21 }
22
23 public String toString () {
24 return "Filling first cup " ;
25 }
26 }
15. Pornind de la modelul oferit de clasa Fill1 construit, i clasele Fill2, Empty1, Empty2,
Empty_1to2 s, i Empty_2to1 în cadrul pachetului watercups.operators.
16. Construit, i în cadrul pachetului watercups.operators o clas denumit WaterCup-
Operators:
1 package watercups . o p e r a t o r s ;
2
3 import java . u t i l . ArrayList ;
4 import w a t e r c u p s . s t a t e s . W at e rC u pS t at e ;
5 import templates . Operator ;
6
7 public class WaterCupOperators {
8 private static A r r a y L i s t <O p e r a t o r <WaterCupState>>
waterCupOperators
9 =new A r r a y L i s t <O p e r a t o r <WaterCupState >>() ;
10
11 public static A r r a y L i s t <O p e r a t o r <WaterCupState>>
returnOperators () {
12 w a t e r C u p O p e r a t o r s . add ( new Fill1 () ) ;
13 w a t e r C u p O p e r a t o r s . add ( new Fill2 () ) ;
14 w a t e r C u p O p e r a t o r s . add ( new Empty1 ( ) ) ;
9
Universitatea de Vest din Timi³oara
Departamentul de Informatic Aritoni Ovidiu
import O p e r a t o r s . WaterCupOperators ;
import S t a t e s . CMState ;
import S t a t e s . FarmerStates ;
import S t a t e s . W at e rC u pS t at e ;
import Templates . Operator ;
import Templates . S t a t e ;
import Algorithms . ∗ ;
// 1a . Definirea operatorilor
A r r a y L i s t <O p e r a t o r <WaterCupState>> w a t e r C u p O p e r a t o r s=W a t e r C u p O p e r a t o r s . r e
// 1b . Definirea starii intiale
S t a t e <WaterCupState> w a t e r C u p I n i t i a l S t a t e=W a te r Cu p St a te . i n i t a l S t a t e ( ) ;
// 1c . Definirea starilor finale
A r r a y L i s t <S t a t e <WaterCupState>> w a t e r C u p F i n a l S t a t e=Wa t er C up S ta t e . f i n a l S t a
C o n t e x t<WaterCupState> w ;
w=new C o n t e x t<WaterCupState >(new D e p t h S t r a t e g y <WaterCupState > ( ) ) ;
w. e x e c u t e S t r a t e g y ( w a t e r C u p I n i t i a l S t a t e , waterCupFinalState , waterCupOperato
}
1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 Initial State
3 Cup 1 contains : 0 Cup 2 contains : 0
10
Universitatea de Vest din Timi³oara
Departamentul de Informatic Aritoni Ovidiu
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
5 Filling first cup
6 Cup 1 contains : 3 Cup 2 contains : 0
7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 Filling second cup
9 Cup 1 contains : 3 Cup 2 contains : 4
10 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
11 Empting first cup
12 Cup 1 contains : 0 Cup 2 contains : 4
13 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
14 Filling first using second cup
15 Cup 1 contains : 3 Cup 2 contains : 1
16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
17 Empting first cup
18 Cup 1 contains : 0 Cup 2 contains : 1
19 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
20 Filling first using second cup
21 Cup 1 contains : 1 Cup 2 contains : 0
22 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
23 Filling second cup
24 Cup 1 contains : 1 Cup 2 contains : 4
25 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
26 Filling first using second cup
27 Cup 1 contains : 3 Cup 2 contains : 2
19. În mod analog testat, i funct, ionalitatea algoritmilor de c utare în l t, ime, în adâncime
limitat , în ad ncime iterativ . Setat, i diferite valori pentru limita c ut rii în
adâncime, respectiv pentru cea iterativ .
11