momente şi schiţe de informatică şi matematică
To attain knowledge, write. To attain wisdom, rewrite.

Generarea directă a unui ciclu eulerian, în grafurile complete

C++ | DOT | Hierholzer | Python | graf
2014 feb

Pentru graful complet cu nodurile 0..2n şi cu listele de adiacenţă ordonate crescător, ciclul eulerian produs de algoritmul lui Hierholzer startat din nodul 2n este constituit din n cicli disjuncţi după muchii, având în comun vârful 2n şi respectiv lungimile 3+4*j (j=0..n-1); exceptând ciclul cel mai lung, nodurile fiecărui ciclu - afară de primul nod 2n şi de ultimele patru noduri - provin din nodurile de aceeaşi poziţie ale ciclului de lungime imediat superioară, prin majorarea acestora cu 2.

Model C++ de graf şi submodel de graf eulerian

C++ | DOT | Hierholzer | graf
2014 jan

Completăm modelul "minimal" de graf (introdus anterior), astfel încât să facilităm algoritmii care angajează muchiile grafului: după ce muchia este parcursă, ea trebuie "ştersă" (marcând-o drept "utilizată"), iar gradele curente ale capetelor ei trebuie decrementate. Derivăm de aici, o modelare a grafurilor euleriene (algoritmul lui Hierholzer) şi testăm pentru grafurile complete (K1001 poate fi "rezolvat" sub 100 de secunde).

Producţii De Bruijn dintr-un model minimal de graf

C++ | DOT | De Bruijn | graf
2014 jan

O modelare minimală a grafurilor ar avea de prevăzut alocarea şi delocarea memoriei pentru înregistrarea adiacenţei, o metodă de precizare a adiacenţei a două vârfuri şi o metodă generală de traversare (fie DFS), în vederea prelucrării vârfurilor printr-o metodă lăsată spre specificare claselor derivate.

Constituim în C++ un astfel de model, clasa Graph. Rezolvarea a diverse chestiuni reductibile la parcurgerea şi prelucrarea nodurilor unui anumit graf, revine la a deriva din Graph o clasă al cărei constructor să seteze adiacenţa specifică problemei, încorporând metoda specifică de "prelucrare" şi o metodă care să invoce Graph::DFS(). Exemplificăm aceste demersuri pentru a produce şiruri De Bruijn.

Generarea directă a unor şiruri De Bruijn binare

C++ | De Bruijn
2014 jan

Studiem o relaţie "uϒv" între numere reprezentabile pe n biţi, astfel încât u şi v să poată fi reperate într-o secvenţă de n+1 biţi consecutivi dintr-un şir S; justificăm un algoritm de generare a unui şir finit de numere naturale - iterând relaţia "uϒv" - astfel încât reprezentările binare ale termenilor şirului să poată furniza un cel mai scurt cuvânt S care să aibă ca subcuvinte toate secvenţele de n biţi.
Şirul generat prin acest algoritm coincide cu cel dat de parcurgerea DFS a grafului asociat relaţiei "uϒv", plecând însă dintr-un anumit nod al acestuia.

Aplicaţii elementare ale metodei Monte Carlo

C++ | Python
2013 dec

Estimarea "experimentală" a numărului PI; probabilitatea ca un triunghi înscris într-un cerc dat să fie ascuţitunghic. Determinarea mutării de răspuns în cursul unui joc (Hex), prin simulări Monte Carlo ale continuării jocului.


Prev
Next
ALL (386 titluri)

vezi Cărţile mele (de programare)

despre acesta ~ Home
(sau https://vlad.bazon.net/

Factoriale | Graficul funcţiilor

PGN browser | chess JS engine

Load

in /slightchess

/slightchess

626 partide analizate cu Crafty

(R) Computer Art | Decoraţiuni

Aplicaţii şcolare (javaScript)

Sinteze: