Grafuri bipartite. Lecție de probă, informatică clasa a XI-a. Mihai Bărbulescu Facultatea de Automatică și Calculatoare, UPB

Similar documents
Olimpiad«Estonia, 2003

Procesarea Imaginilor

Subiecte Clasa a VI-a

Ghid identificare versiune AWP, instalare AWP şi verificare importare certificat în Store-ul de Windows

ARBORI AVL. (denumiti dupa Adelson-Velskii si Landis, 1962)

D în această ordine a.î. AB 4 cm, AC 10 cm, BD 15cm

Metrici LPR interfatare cu Barix Barionet 50 -

Arbori. Figura 1. struct ANOD { int val; ANOD* st; ANOD* dr; }; #include <stdio.h> #include <conio.h> struct ANOD { int val; ANOD* st; ANOD* dr; }

Printesa fluture. Мобильный портал WAP версия: wap.altmaster.ru

Mods euro truck simulator 2 harta romaniei by elyxir. Mods euro truck simulator 2 harta romaniei by elyxir.zip

Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice

Lecţii complementare de teoria grafurilor

Semnale şi sisteme. Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC)

Reflexia şi refracţia luminii. Aplicaţii. Valerica Baban

În continuare vom prezenta unele dintre problemele de calcul ale numerelor Fibonacci.

Textul si imaginile din acest document sunt licentiate. Codul sursa din acest document este licentiat. Attribution-NonCommercial-NoDerivs CC BY-NC-ND

Versionare - GIT ALIN ZAMFIROIU

Structura și Organizarea Calculatoarelor. Titular: BĂRBULESCU Lucian-Florentin

Procesarea Imaginilor - Laborator 5: Etichetarea componentelor conexe 1

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC

Auditul financiar la IMM-uri: de la limitare la oportunitate

La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - <numarul dvs de carnet> (ex: "9",

APLICAŢII ELEMENTARE CU ARBORI

2. Setări configurare acces la o cameră web conectată într-un router ZTE H218N sau H298N

Mircea Merca 1) Articol dedicat Prof. Dr. Ioan Tomescu la a 70-a aniversare

The First TST for the JBMO Satu Mare, April 6, 2018

Metoda de programare BACKTRACKING

Structuri de date: ARBORI

Class D Power Amplifiers

Mecanismul de decontare a cererilor de plata

INFORMAȚII DESPRE PRODUS. FLEXIMARK Stainless steel FCC. Informații Included in FLEXIMARK sample bag (article no. M )

HEAPSORT I. CONSIDERAŢII TEORETICE

9. Memoria. Procesorul are o memorie cu o arhitectură pe două niveluri pentru memoria de program și de date.

SAG MITTIGATION TECHNICS USING DSTATCOMS

Metoda BACKTRACKING. prof. Jiduc Gabriel

Propuneri pentru teme de licență

CAIETUL DE SARCINI Organizare evenimente. VS/2014/0442 Euro network supporting innovation for green jobs GREENET

Dispozitive Electronice şi Electronică Analogică Suport curs 02 Metode de analiză a circuitelor electrice. Divizoare rezistive.

MS POWER POINT. s.l.dr.ing.ciprian-bogdan Chirila

Cristina ENULESCU * ABSTRACT

The driving force for your business.

Lucrarea de laborator nr. 4

Modalitǎţi de clasificare a datelor cantitative

2. In the pattern below, which number belongs in the box? 0,5,4,9,8,13,12,17,16, A 15 B 19 C 20 D 21

Aspecte controversate în Procedura Insolvenţei şi posibile soluţii

CHAMPIONS LEAGUE 2017 SPONSOR:

GHID DE TERMENI MEDIA

Nume şi Apelativ prenume Adresa Număr telefon Tip cont Dobânda Monetar iniţial final

EN teava vopsita cu capete canelate tip VICTAULIC

Ziua Copilului. Fabuloase și ieftine! Preț special. Preț special. set creativ Label Waffles. Roabă

Capete terminale şi adaptoare pentru cabluri de medie tensiune. Fabricaţie Südkabel Germania

CERERI SELECT PE MAI MULTE TABELE

Update firmware aparat foto

Introducere în algebra computationala

INTELIGENŢĂ ARTIFICIALĂ

ANTICOLLISION ALGORITHM FOR V2V AUTONOMUOS AGRICULTURAL MACHINES ALGORITM ANTICOLIZIUNE PENTRU MASINI AGRICOLE AUTONOME TIP V2V (VEHICLE-TO-VEHICLE)

A Die-Linked Sequence of Dacian Denarii

RADIO TRANSCEIVER CONSUMPTION MODELING FOR MULTI-HOP WIRELESS SENSOR NETWORKS

Prima. Evadare. Ac9vity Report. The biggest MTB marathon from Eastern Europe. 7th edi9on

Baze de date distribuite și mobile

Evoluția pieței de capital din România. 09 iunie 2018

Kurt Gödel Argumentul ontologic

VIRTUAL INSTRUMENTATION IN THE DRIVE SUBSYSTEM MONITORING OF A MOBIL ROBOT WITH GESTURE COMMANDS

MINTE, CONȘTIINȚĂ LIBERUL ARBITRU.

Studiul soluţiilor de localizare în reţele de senzori bazate pe evaluarea conectivităţii în vederea utilizării în sisteme colaborative de explorare

Vizualizarea documentelor xml

Procese de planificare

Updating the Nomographical Diagrams for Dimensioning the Concrete Slabs

Documentaţie Tehnică

ASUPRA UNOR PROBLEME PROPUSE LA CONCURSURI INTERJUDEŢENE

INTELIGENŢĂ ARTIFICIALĂ

Normalizarea tăriei sonore şi nivelul maxim permis al semnalelor audio

Laborator 1. Programare declarativă. Programare logică. Prolog. SWI-Prolog

ISBN-13:

Rem Ahsap is one of the prominent companies of the market with integrated plants in Turkey, Algeria and Romania and sales to 26 countries worldwide.

A NOVEL ACTIVE INDUCTOR WITH VOLTAGE CONTROLLED QUALITY FACTOR AND SELF-RESONANT FREQUENCY

F. Radulescu. Curs: Utilizarea bazelor de date, anul IV C5.

Candlesticks. 14 Martie Lector : Alexandru Preda, CFTe

ACTA TECHNICA NAPOCENSIS

LIDER ÎN AMBALAJE EXPERT ÎN SISTEMUL BRAILLE

INFLUENZA ACTIVITY UNITED STATES AND WORLDWIDE, SEASON *

Prelucrarea numerică a semnalelor

Proiectarea Sistemelor Software Complexe

PROCEDURA PRIVIND DECONTURILE. 2. Domeniu de aplicare Procedura se aplică în cadrul Universităţii Tehnice Cluj-Napoca

REZOLVAREA NUMERICĂ A ECUAŢIILOR CU DERIVATE PARŢIALE FOLOSIND METODA LINIILOR

CERERI SELECT PE O TABELA

Managementul referinţelor cu

ADMITERE 2015 SUBIECTELE PROBELOR ŞI BAREMELE DE CORECTARE ŞI NOTARE PROFILUL MAIŞTRI MILITARI PROBA NR.1 TEST GRILĂ LA LIMBA ENGLEZĂ VARIANTA 2

Capitolul 7. Data mining. F. Radulescu. Curs: Utilizarea bazelor de date, anul IV C5.

DOWNLOAD OR READ : TOM OG LINDA I NORGE A COURSE IN NORWEGIAN FOR BEGINNERS STUDENT EDITION PDF EBOOK EPUB MOBI

Stat minimal sau utopie? O incursiune în viziunea lui Robert Nozick privind conceptul de asociație stabilă

Ghid de pornire rapidă

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Universitatea Babeş-Bolyai, Cluj-Napoca Facultatea de Matematică şi Informatică

SINGULAR PERTURBATION DETECTION USING WAVELET FUNCTION REPRESENTATION

O abordare Data Mining pentru detectarea accesului neautorizat la baza de date.

INTEROGĂRI ÎN SQL SERVER

EVALUARE NAŢIONALĂ LA FINALUL CLASEI a VI-a Model de test Limbă şi comunicare - Limba engleză

Problema identitatii la Aristotel. Problema identității la Aristotel. Gheorghe Ştefanov ABSTRACT:

MODELUL UNUI COMUTATOR STATIC DE SURSE DE ENERGIE ELECTRICĂ FĂRĂ ÎNTRERUPEREA ALIMENTĂRII SARCINII

Transcription:

Grafuri bipartite Lecție de probă, informatică clasa a XI-a Mihai Bărbulescu b12mihai@gmail.com Facultatea de Automatică și Calculatoare, UPB Colegiul Național de Informatică Tudor Vianu București 27 februarie 2013 1 / 16

Cuprins 1 Încă un algoritm pe grafuri? 2 Definiții Amintiri din copilărie... De ce doar atât? 3 Soluția 1 - BFS Pseudocod 4 Soluția 2 - DFS 5 Întrebări 2 / 16

Probleme interesante pentru mintea voastră Fie o tablă de șah 8 8, căreia îi ștergem pătratul din stânga sus și din dreapta jos. Demonstrați că nu putem acoperi tabla cu piese de domino 1 2 fără să existe nici o suprapunere între piese 3 / 16

Probleme interesante pentru mintea voastră Fie o tablă de șah 8 8, căreia îi ștergem pătratul din stânga sus și din dreapta jos. Demonstrați că nu putem acoperi tabla cu piese de domino 1 2 fără să existe nici o suprapunere între piese Există băieți și fete în clasa a XI-a. Fiecărui băiat îi place de o fată. Un tovarăș comun al unei potențiale perechi încearcă să îi facă fericiți pe amândoi și să joace rolul lui Cupidon. Misiunea tovarășului e îndeplinită doar dacă băiatul o place pe fată și invers. E posibilă împerecherea tuturor? Ce proprietate trebuie să aibă această clasă a XI-a pentru a fi toată lumea îndrăgostită? 3 / 16

Felicitări celor care au găsit soluție la problemele de mai sus fără a folosi grafuri bipartite! 4 / 16

Felicitări celor care au găsit soluție la problemele de mai sus fără a folosi grafuri bipartite! Eu din păcate știu altfel 4 / 16

Felicitări celor care au găsit soluție la problemele de mai sus fără a folosi grafuri bipartite! Eu din păcate știu altfel Fie un graf G = (V, E). G se numește bipartit dacă mulțimea nodurilor, V, poate fi împărțită în două mulțimi disjuncte A și B astfel încât: V = A B și E A B (adică orice muchie leagă un nod din A cu un nod din B). 4 / 16

Amintiri din copilărie... Amintiri din copilărie... Cozi - structuri de date FIFO (First In, First Out) - primul venit, primul servit/prelucrat BFS - breadth first search - parcurgere în lățime a grafurilor Vizitare + inspectarea unui nod Obținerea accesului la vecinii nodului curent vizitat DFS - depth first search - parcurgere în adâncime a grafurilor Vizitare + inspectarea unui nod Obținerea accesului la vecinii nodului curent vizitat Și ultimul, dar nu cel din urmă: reprezentarea grafurilor în memorie 5 / 16

De ce doar atât? Putem folosi atât BFS cât și DFS pentru a detecta dacă un graf e bipartit sau nu Care e mai bună pentru problema noastră? DFS - nu e optim, dar parcurge tot graful BFS - e optim, dar nu parcurge tot graful 6 / 16

Folosim BFS pentru a detecta dacă un graf e bipartit În timp ce efectuez parcurgerea atribui etichete nodurilor (A sau B - cele două mulțimi din definiție) 7 / 16

Folosim BFS pentru a detecta dacă un graf e bipartit În timp ce efectuez parcurgerea atribui etichete nodurilor (A sau B - cele două mulțimi din definiție) Etichete atribuite conform cu paritatea nivelului (A - nivel par, B - nivel impar) 7 / 16

Folosim BFS pentru a detecta dacă un graf e bipartit În timp ce efectuez parcurgerea atribui etichete nodurilor (A sau B - cele două mulțimi din definiție) Etichete atribuite conform cu paritatea nivelului (A - nivel par, B - nivel impar) Apoi verific etichetele vecinilor nodului în care mă aflu acum 7 / 16

Folosim BFS pentru a detecta dacă un graf e bipartit În timp ce efectuez parcurgerea atribui etichete nodurilor (A sau B - cele două mulțimi din definiție) Etichete atribuite conform cu paritatea nivelului (A - nivel par, B - nivel impar) Apoi verific etichetele vecinilor nodului în care mă aflu acum Momentul nasol: Unul din vecini are aceeași etichetă ca cea a nodului curent Graful nu e bipartit. Opresc algoritmul! 7 / 16

Folosim BFS pentru a detecta dacă un graf e bipartit În timp ce efectuez parcurgerea atribui etichete nodurilor (A sau B - cele două mulțimi din definiție) Etichete atribuite conform cu paritatea nivelului (A - nivel par, B - nivel impar) Apoi verific etichetele vecinilor nodului în care mă aflu acum Momentul nasol: Unul din vecini are aceeași etichetă ca cea a nodului curent Graful nu e bipartit. Opresc algoritmul! Cu alte cuvinte, graful are o muchie între noduri de pe același nivel și deci nu are cum să fie bipartit Momentul fericit: nu s-a oprit algoritmul! 7 / 16

De ce merge? 8 / 16

De ce merge? Demonstrația corectitudinii algoritmului nu merită făcută acum! 8 / 16

Pseudocod isbipartite(g = (V, E), s) 1 for (u V {s}) { 2 color[u] WHITE 3 dist[u] 4 partition[u] 0 5 } 6 color[s] GRAY 7 dist[s] 0 8 partition[s] 1 9 enqueue(q, s) 9 / 16

Pseudocod 1 while (Q ) { 2 u = dequeue(q) 3 for (v vecini(u)) { 4 if (partition[u] == partition[v]) 5 return 0 6 else if (color[v] == WHITE) { 7 color[v] = GRAY 8 dist[v] = dist[u] + 1 9 partition[v] = 3 partition[u] 10 enqueue(q, v) 11 } 12 } 13 color[u] = BLACK 14 } 15 return 1 10 / 16

Cum detectăm că un graf e bipartit folosind DFS? Simplificăm algoritmul DFS pentru a testa dacă un graf dat G = (V, E) e bipartit Modificăm definiția inițială astfel: G este bipartit dacă nodurile sale pot fi colorate cu două culori și astfel încât următoarea proprietate e adevărată pentru (u, v) E: color[u] color[v] și color[u] {, } și color[v] {, } 11 / 16

Cum detectăm că un graf e bipartit folosind DFS? (cont.) Proprietatea poate fi rescrisă în raport cu nodurile grafului: P(V ) u V și v vecini(u) unde P(u) color[u] color[v] și color[u] {, } și color[v] {, } 12 / 16

Cum detectăm că un graf e bipartit folosind DFS? (cont.) Dacă reușim să colorăm v în culoarea complementară lui color[u] și proprietatea P(V ) e adevărată atunci P(u) e adevărată Verificarea cu DFS, practic, pornește de la parcurgerea în adâncime și testeză dacă P(u) e adevărată 13 / 16

Cum detectăm că un graf e bipartit folosind DFS? (cont.) culoarecomplementară(c) 1 if (c == ) 2 return 3 return isbipartite(g = (V, E)) 1 for (u V ) 2 color[u] = WHITE 3 for (u V ) 4 if (color[u] == WHITE) // Verificarea P(u) 5 if (explore(u, ) == 0) 6 return 0 7 return 1 14 / 16

Cum detectăm că un graf e bipartit folosind DFS? (cont.) explore(u, cu) 1 cv = culoarecomplementară(cu) 2 color[u] = cu 3 4 for (v vecini(u)) 5 if (color[v] == WHITE) // Verificarea P(v) 6 if (explore(v, cv) == 0) 7 return 0 8 if (color[u] == color[v]) 9 return 0 10 11 return 1 // P(u) e adevărată 15 / 16

Întrebări graf bipartit colorare noduri mulțimi disjuncte partiționare împerecheri 16 / 16