1 / 23

Str ă zile

Str ă zile. Elevi : - B ălțoi Ion Costel Marius -Voitecovits Ionuț-Ciprian Colegiul Național “ Ecaterina Teodoroiu ” Profesor îndrumător : Ohotă Eugenia-Maria.

nikkos
Download Presentation

Str ă zile

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Străzile Elevi: -Bălțoi Ion Costel Marius -Voitecovits Ionuț-Ciprian Colegiul Național “Ecaterina Teodoroiu” Profesor îndrumător: Ohotă Eugenia-Maria

  2. Ca în fiecare primăvară, autorităţile locale ale oraşului Târgu- Jiuau declanşat diverse acţiuni edilitare şi de curăţenie specifice acestui sezon. Imediat după ce zăpada s-a topit au fost declanşate acţiuni de curăţenie în special în zona centrală a oraşului şi a parcurilor. De asemenea, autoritaţile locale au fostpreocupateşi de întreţinereaşimodernizareastrăzilor din oraş. Pentruefectuarealucrărilor la străzi, Primăriaia hotărârea de a organiza o licitaţieprin care săatribuieacestelucrăriuneifirme private.

  3. Dupădesfaşurarealicitaţieipentrumodernizareadrumurilor din localitate, aceastaeste caştigată de SC.BV Construct.SA, care se angajează ca în termen de 60 zile săterminetoatelucrările.

  4. Înainte de începerealucrărilor, constructorii s-au gândit cum le estemai uşor sămodernizezestrăzile, dar nu ştiaunicioidee care să le uşurezemunca de organizare a şantierului!...Pestecevatimp, un inginerîşiaminteşte că reţeaua de străzi seamănă cu grafurile orientate de la informatică!...De aici, totul a devenit din ceîn cemaisimplu!

  5. Pentruînceput, constructorii au ales saînveţe câtecevadespregrafuripentru a-şi uşuramuncapeşantier! Se numește graf(G) o pereche ordonată de mulțimi(X,U) unde X este o mulțime finită și nevidă, iar U o mulțime de perechi formate cu elemente distincte din mulțimea X. Un graf G=(X,U) este un graf neorientat dacă mulțimea U are proprietatea de simetrie. Mulțimea U este formată din perechi neodronate { , }. Un graf G=(X,U) este un graf orientat daca mulțimea U nu are proprietatea de simetrie. Mulțimea U este formată din perechi ordonate { , }. Numim noduri adiacente orice pereche de noduri care formează o muchie –{ , } U. Fiecare dintre cele două noduri si este nod incident cu muchia =[ , ]. Nodurile vecine unui nod sunt toate nodurile care sunt adiacente cu el. Nodurile si sunt extremitățile arcului []. Nodul este extremitatea inițială a arcului, iar nodul este extremitatea finală a arcului.

  6. Gradul unui nod al grafului G este egal cu numărul muchiilor(arcelor) incidente cu nodul și se notează cu d(). Gradul intern al unui nod al grafului G este egal cu numărul arcelor care intră in nodul . Gradul extern al unui nod algrafului G este egal cu numărul arcelor care ies din nodul . Se numește nod terminal un nod care are suma gradelor egală cu 1. Se numește nod izolat un nod care are suma gradelor egală cu 0. Se numește succesor al nodului xi orice nod la care ajunge un arc care iese din nodul xi. Mulțimea succesorilor nodului xi este formată din mulțimea nodurilor la care ajung arcele care ies din nodul xi. Se numește predecesor al nodului orice nod de la care intra un arc în nodul . Mulțimea predecesorilor nodului este formată din mulțimea nodurilor de la care ajung arcele care intră în nodul .

  7. Reprezentarea și implementarea grafului: - Matricea de adiacențăa unuigrafcun noduri se definesteastfel: a[i][j]=1, daca exista muchie/arc de la nodul i la nodul j; a[i][j]=0, daca nu exista muchie/arc de la nodul i la nodulj. - Matricea de incidență a unuigraforientat cu n noduri se definesteastfel: a[i][j]=-1. dacanodul i esteextremitateinitiala; a[i][j]=1, dacanodul i esteextremitatefinala; a[i][j]=0, daca nu existamuchieintrecele 2 noduri. - Vectorul de arceal unui graf este format din m elemente care conțin, fiecare, câte o pereche de două noduri, și care formează o muchie, adică pentru care [ ,] U. - Lista de adiacențăesteformata din listele≤i≤n) care contintotiveciniiunui nod la care se poateajunge direct din nodul, adicatoatenodurilepentrupentru care , ]U.

  8. Constructorii au folositgrafurilesiteoriagrafurilorpentru: • Reprezentarea reţelei de străzi; • Intersecţiile la care nu se poateajunge din nicio altăintersecţie; • Intersecţiile la care se poateajunge direct din celemaimulteintersecţii; • Intersecţiile de la care se poateajunge direct în celemaimulteintersecţii; • Numărul de străzipe care se circulăîn ambelesensuri; • Numărul de intersecţii mici, marişi foartemari;

  9. 7) Numărulpanourilor cu semnepentruprioritatece se vorfolosii; 8) Numărulpanourilor cu semnepentruinterzicereacirculaţieice se vorfolosi; 9) Numărul de semafoare care se vormonta; • Reprezentareastrăzilor care suntîncăîn uz; • Reprezentarearetelei de strazi in urmainchideriianumitorintersectii.

  10. 1) Reprezentarea reţelei de străziceurmează a fimodernizată.Pentruaceasta, ei au hotărât săutilizezevectorul de arcedeoarece au considerat căestemai uşor sănotezenodurileundeîncepşi se terminăstrăzile. {(1,2),(1,7),(2,3),(3,4),(3,5),(5,6),(5,7),(6,1)(6,3),(7,1)}

  11. 2) Intersecţiile la care nu se poateajunge din nicio altăintersecţie Pentru a determinaintersecţiile la care nu se poateajunge din nicio altăintersecţie, constructoriialeg să determine toatenodurile care nu au predecesori - nodurile cu grad intern 0. -Funcţiagrad_i(int i) se foloseştepentrucalculareagradului intern al noduluii; #include <iostream.h>struct { int x,y;} v[100]; int n,m; void citire() {for (int i=1;i<=m;i++) cin>>v[i].x>>v[i].y;}int grad_i( int t){ int s=0,i;for (i=1;i<=m;i++) if(v[i].y==t)s++;return s;}intmain() {cin>>n>>m; citire();int i;for(i=1;i<=n;i++)if (grad_i(i)==0) cout<<i<<" ";}

  12. 3) Intersecţii la care se poateajunge direct din celemaimulteintersecţii Pentru a determina intersecțiile la care se poate direct din cele mai multe intersecții se determină nodurile care au au gradul intern maxim. Cu ajutorulfuncţieigrad_i(int t) se calculeazăgradul intern al noduluit. #include <iostream.h>struct { int x,y;} v[100];int n,m;void citire(){for (int i=1;i<=m;i++) cin>>v[i].x>>v[i].y;}int grad_i( int t){ int s=0,i;for (i=1;i<=m;i++)if(v[i].y==t)s++;return s;}intmain() {cin>>n>>m; citire();int i,max=-1;for(i=1;i<=n;i++) { int x=grad_i(i);if (max<x) max=x;}for(i=1;i<=n;i++){ int x=grad_i(i);if (max==x) cout<<i<<" ";}}

  13. 3) Intersecţiile de la care se poateajunge direct din celemaimulteintersecţii Pentru a determina intersecțiile din care se poate ajungedirect la cele mai multe intersecții se determină nodurile care au gradul extern maxim. Functiagrad_e(int t)calculeazagradul extern al noduluit. #include <iostream.h>struct { int x,y;} v[100];int n,m;void citire(){for (int i=1;i<=m;i++) cin>>v[i].x>>v[i].y;}int grad_e( int t){ int s=0,i;for (i=1;i<=m;i++) if(v[i].x==t)s++;return s;}intmain() {cin>>n>>m; citire();int i,max=-1;for(i=1;i<=n;i++){ int x=grad_e(i);if (max<x) max=x;}for(i=1;i<=n;i++){ int x=grad_e(i);if (max==x) cout<<i<<“ “;}}

  14. 4) Numărul de străzipe care se circulă in ambelesensuri Se determină numărul de perechi denoduri i și j pentu care, în matricea de adiacență, elementele a[i][j] și a[j][i] sunt egale cu 1. Programul transformăvectorul de arceîn matrice de adiacenţă, după care verificădacă existăarce de la noduli la jsi de la nodulj la i. Variabilele x si y retinnodurileextremitateinitialesiextremitatefinala a unui arc, apoi se modifica in matricea de adiacenta. #include <iostream> struct arc{ int x, y; } v[100]; int a[100][100],n,m; int main() {int x, y; cin>>n>>m; for(int i=1; i<=m; i++) cin>>v[i].x>>v[i].y; for(i=1; i<=m; i++) {x = v[i].x; y = v[i].y; a[x][y] = 1;} for(i=1; i<=n; i++) for(j=1; j<=n; j++) if (a[i][j]==1 && a[j][i]==1) cout<<i<<“ “;}

  15. 5) Numărul de intersecţii mici, marisifoartemari #include <iostream.h>struct { int x,y;} v[100];int n,m;void citire(){for (int i=1;i<=m;i++) cin>>v[i].x>>v[i].y;}int grad_i( int t){ int s1=0,i;for (i=1;i<=m;i++)if(v[i].y==t)s1++;return s1;} int grad_e( int t){ int s2=0,i;for (i=1;i<=m;i++) if(v[i].x==t)s2++;return s2;} int main() {int a=0,b=0,c=0; cin>>n>>m; citire(); for (i=1;i<=n;i++) if (grad_i(i)+grad_e(i)<4) a++; else if (grad_i(i)+grad_e(i)<=6) b++; else if (grad_i(i)+grad_e(i)>6) c++; cout<<a<<“ intersectiimici”<<endl; cout<<b<<“ intersectiimari”<<endl; cout<<c<<“ intersectiifoartemari”; } Se aflăgradul intern sigradul extern al unui nod, dupa care se calculeazanumarulnoduriloradiacente cu un nod i.

  16. 6) Numărul panourilor cu semne pentru prioritatece se vorfolosi Panourile cu semne de prioritate se vorinstala, în general, la sfârșitulanumitorstrăzi, deci se vacalculagradul intern al unui nod i, apoi se realizeazăsumapanourilornecesarepentrufiecarestradă. #include <iostream.h>struct { int x,y;} v[100];int n,m;void citire(){for (int i=1;i<=m;i++) cin>>v[i].x>>v[i].y;}int grad_i( int t){ int s1=0,i;for (i=1;i<=m;i++) if(v[i].y==t)s1++;return s1;}intmain() {cin>>n>>m; citire();int i,s=0;for(i=1;i<=n;i++) s+=grad_i(i);cout<<s<<" ";}

  17. 7) Numărulpanourilor cu semnepentruinterzicereacirculaţieicevor fi folosite Panourile cu semnepentruinterzicereacirculației se vorinstala, în general, la intrareapeanumitestrăzi, deci se vacalculagradulextern al unui nod i, apoi se realizeazăsumapanourilornecesarepentrufiecarestradă. #include <iostream.h>struct { int x,y;} v[100];int n,m;void citire(){for (int i=1;i<=m;i++) cin>>v[i].x>>v[i].y;}int grad_i( int t){ int s1=0,i;for (i=1;i<=m;i++) if(v[i].x==t)s1++;return s1;}intmain() {cin>>n>>m; citire();int i,s=0;for(i=1;i<=n;i++) s+=grad_e(i);cout<<s<<" ";}

  18. 8) Numărul de semafoarece se vormonta Semafoarele se vorinstalaîn intersecțiileunde există 3 saumaimultestrăzi. Pentrudeterminareanumărului de semafoarenecesar, se realizează suma gradelor interne ale nodurilor care au peste 2noduri adiacente. #include <iostream.h>struct { int x,y;} v[100];int n,m;void citire(){for (int i=1;i<=m;i++) cin>>v[i].x>>v[i].y;}int grad_i( int t){ int s=0,i;for (i=1;i<=m;i++) if(v[i].y==t)s++;return s;}intmain() {cin>>n>>m; citire();int i,s=0;for(inti=1;i<=n;i++) if (grad_i(i)>2) s+=grad_i(i);cout<<s<<" ";}

  19. 10) Determinareaunuigraf parţial al grafuluiiniţial #include <iostream.h> int a[100][100], n, m ,t; structmuchii{intx,y;} v[100]; void citire() {for (int i=1;i<=m;i++) {cin>>v[i].x>>v[i].y; a[v[i].x][v[i].y]=1;}} void elimina(intx,int y) {if (a[x][y]==1) a[x][y]=0;} void scrie() {for (int i=1;i<=n;i++) {for (int j=1;j<=n;j++) cout<<a[i][j]<<" "; cout<<endl;}} int main() {citire(); intx,y; cin>>n>>m>>t; for (int k=1;k<=t;k++) {cin>>x>>y; elimina(x,y);} scrie();} După repetateledeszăpezirisiinundatiidin această iarnă,unelestrăzisipoduri s-au degradat înasemenea masurăîncât numai sunt adecvatecirculației,drept pentrucare s-auînchis. Constructoriitrebuiesareprezintereteaua de strazidupainchidereaanumitorstrazi. Un graf parțial al grafului G este el însuși sau un graf care s-a obținut prin eliminarea unor muchii(arce) din graful G.

  20. n – numărulde intersecţiim – numărulde străzit – numărulde străzicevor fi închiseÎn subprogramulcitire() se realizeazacitireavectorului de muchiişitransformareavectorului de muchiiîn matrice de adiacenţă.Subprogramulelimina(intx, int y) realizeazăeliminareauneimuchii care are extremitateiniţialănodul x şi extremitatefinală- nodul y.Cu ajutorulsubprogramuluiscrie() se afişeazamatricea de adiacenţăa grafuluiparţial.În programul principal, se citesccele t perechide noduricare reprezintăextremităţilemuchiilor, apoi se apeleazăsubprogramulelimina(int x. int y).

  21. 11) Determinarea unui subgraf al grafului reprezentând rețeaua de străzi Unele intersecții vor fi dezafectatedeoarece în urmaunor studii, s-a constatatcaesteeficientca înacele locații săseconstruiascăanumite edificii, fiindnevoie de o refluidizare a traficului. Un subgraf al grafului G este el însuși sau un graf care s-a obșinut prin suprimarea din graful G a unor noduri și a tuturor muchiilor(arcelor) incidente cu aceste noduri. #include<iostream.h> struct {int x,y;} v[100]; int c[100][100],n,m,x,y,t,s[10]; void citire() {for (int i=1;i<=m;i++) cin>>v[i].x>>v[i].y; for (int k=1;k<=t;k++) cin>>s[k];} void transf() {for(int i=1; i<=m; i++) {x = v[i].x; y = v[i].y; c[x][y] = 1;}} void subgraf() {for (int k=1;k<=t;k++) for (int i=1;i<=n;i++) if (i==s[k]) for (int j=1;j<=n;j++) { c[i][j]=0; c[j][i]=0;}} void scrie() {for (int i=1;i<=n;i++) {for (int j=1;j<=n;j++) cout<<c[i][j]<<" "; cout<<endl;}} int main() {cin>>n>>m>>t; for (int k=1;k<=t;k++) cin>>s[k]; citire(); transf(); subgraf(); scrie();}

  22. n – numărul de intersecțiim – numărul de străzit – numărul de intersecții ceurmează a fi închiseVectoruls[10]memoreazăintersecțiileceurmează a fi închise.În subprogramulcitire(), se vorcitiiintersecțiile care suntcapete de străziși intersecțiilece se vorînchide.Subprogramultransf() transformăvectorul de arceîn matrice de adiacență.În subprogramulsubgraf() se parcurgevectorulîn care suntmemorateintersecțiilecevor fi închise, apoi se parcurgcele n noduri din matricea de adiacență; arcele se voreliminaprininițializareaelementelor c[i][j] și c[j][i] cu 0.Subprogramulscrie()afșeazămatricea de adiacență a subgrafului.

  23. În ultimelezile rămase pâna la expirareatermenului de execuţie a lucrărilor, Primăria împreună cu constructorul se gândesc sa demareze un proiect prin care să promoveze deplasarea cu ajutorul mijloacelor de transport ecologice care afecteaza într-o mai mică măsura calitatea drumurilor şi influenţează pozitiv sănătatea oamenilor.

More Related