As mai adauga Knuth Morrit Pratt folosit la cautarea unui substring intr-un string care are complexitate de O(n+k) bazat pe un tabel cu frecventa aparitiei caracterelor in string-uri spre deosebire metoda naiva de comparare caracter cu caracter care are O(n^2).
Un loc important il are si capitolul de grafuri si determinarea de drumuri in grafuri.
Sunt bine de stiut aceste lucruri, acesti algoritmi si structuri de date uneori se asambleaza ca un puzzle folosindu-se imaginatia pentru a obtine solutii optime la diverse probleme.
Ceva algoritmi si structuri de date, complexitate, subiecte clasice in computer science:
Mi se pare foarte interesant ca se fac data storage in node.js, cu noua paradigma async, await in javascript se apropie de C#.
Data storage de care va ziceam:
OrbitDB is a serverless, distributed, peer-to-peer database. OrbitDB uses IPFS as its data storage and IPFS Pubsub to automatically sync databases with peers. It’s an eventually consistent database that uses CRDTs for conflict-free database merges making OrbitDB an excellent choice for decentralized apps (dApps), blockchain applications and offline-first web applications.
Un mic articol cu cele mai populare structuri de date, si complexitatea operatiilor pe acestea insert, remove, search, complexitate de timp si memorie.
Linked List Stack Queue Binary Search Tree Binary Heap Trie Sets Maps Hashtable Graphs
Sunt structuri de date care se invata la cursurile de computer science in liceu sau facultate.
Si o carte cu metode si tehnici de programare dintre care
-1. Preface (8 pages)
0. Introduction (20 pages)
Linked List si Dictionary le-am folosit in implementare Least Frequently Used Cache pe care l-am facut si NuGet package.
Cozile si stivele se pot folosi la parcurgere grafuri in latime cu o coada si in adancime cu o stiva, sunt multe probleme care se pot modela cu grafuri, rutele de microbuz pe o harta etc.