All Projects → avk959 → Lgenerics

avk959 / Lgenerics

Licence: apache-2.0
Generic algorithms and data structures for Lazarus/Free Pascal

Programming Languages

pascal
1382 projects

Projects that are alternatives of or similar to Lgenerics

Flatbush
A very fast static spatial index for 2D points and rectangles in JavaScript
Stars: ✭ 1,031 (+1647.46%)
Mutual labels:  algorithm
Algo Explorer
Android app for learning algorithms in Computer Science
Stars: ✭ 49 (-16.95%)
Mutual labels:  algorithm
Pathfinding Lab
Run, test and compare all algorithms and heuristic functions
Stars: ✭ 58 (-1.69%)
Mutual labels:  algorithm
Jobinterviewalgorithms
A directory of classic algorithms that you will find when interviewing for software engineering jobs.
Stars: ✭ 46 (-22.03%)
Mutual labels:  algorithm
Data Structure And Algorithms
A complete and efficient guide for Data Structure and Algorithms.
Stars: ✭ 48 (-18.64%)
Mutual labels:  algorithm
Thmap
Concurrent trie-hash map library
Stars: ✭ 51 (-13.56%)
Mutual labels:  algorithm
Nevae
Code and data for "NeVAE: A Deep Generative Model for Molecular Graphs", AAAI 2019
Stars: ✭ 44 (-25.42%)
Mutual labels:  graphs
Overhead Camera People Counter
People counting algorithm using an overhead video camera
Stars: ✭ 58 (-1.69%)
Mutual labels:  algorithm
Vsalert
An drop-in replacement for UIAlertController with more power and better looks.
Stars: ✭ 48 (-18.64%)
Mutual labels:  algorithm
Interview Guide
Coding/technical interview guide: data structures, algorithms, complexity analyses, interview questions
Stars: ✭ 54 (-8.47%)
Mutual labels:  algorithm
Al Go Rithms
🎵 Algorithms written in different programming languages - https://zoranpandovski.github.io/al-go-rithms/
Stars: ✭ 1,036 (+1655.93%)
Mutual labels:  algorithm
Leetcode
正确的姿势,学习的态度来刷 LeetCode:高效的代码、简洁的注释、精炼的总结。
Stars: ✭ 1,043 (+1667.8%)
Mutual labels:  algorithm
Algorithm
algorithm library
Stars: ✭ 55 (-6.78%)
Mutual labels:  algorithm
Time
🕰 Type-safe time calculations in Swift
Stars: ✭ 1,032 (+1649.15%)
Mutual labels:  generics
Study
Algorithm / Book Reviews / Interview / ETC
Stars: ✭ 58 (-1.69%)
Mutual labels:  algorithm
Mvvm Example
iOS protocol-oriented MVVM examples
Stars: ✭ 45 (-23.73%)
Mutual labels:  generics
Lapjv
Go implementation of the LAPJV algorithm
Stars: ✭ 50 (-15.25%)
Mutual labels:  algorithm
Muster
A universal data layer for components and services
Stars: ✭ 59 (+0%)
Mutual labels:  graphs
Awesome Java Leetcode
👑 LeetCode of algorithms with java solution(updating).
Stars: ✭ 8,297 (+13962.71%)
Mutual labels:  algorithm
Lazarus addon
the original lazarus-recovery firefox add-on with some slight modifications -mainly removing the Donation nag
Stars: ✭ 56 (-5.08%)
Mutual labels:  lazarus

LGenerics

Collection of generic algorithms and data structures entirely written in/for FPC and Lazarus. Started as a self-education project, it now seems quite comfortable and fast. In order to use it (FPC 3.2 and higher and Lazarus 1.9.0 and higher):

  • open and compile package lgenerics/LGenerics.lpk.

  • add LGenerics package to project dependencies.

Implemented primitives:

  • stack(unit lgStack)
  • queue(unit lgQueue)
  • deque(unit lgDeque)
  • vector(unit lgVector)
  • vector of bits(unit lgVector)
  • priority queue based on binary heap(unit lgPriorityQueue)
  • priority queue with key update and melding based on pairing heap(unit lgPriorityQueue)
  • sorted list(unit lgList)
  • hashed list - array based list with the ability to fast search by key(unit lgList)
  • hashset(unit lgHashSet)
  • fine-grained concurrent hashset(unit lgHashSet)
  • sorted set(unit lgTreeSet)
  • set of arbitrary size(unit lgUtil, TGSet)
  • hash multiset(unit lgHashMultiSet)
  • fine-grained concurrent hashmultiset(unit lgHashMultiSet)
  • sorted multiset(unit lgTreeMultiSet)
  • hashmap(unit lgHashMap)
  • fine-grained concurrent hashmap(unit lgHashMap)
  • sorted map(unit lgTreeMap)
  • hash multimap(unit lgMultiMap)
  • tree multimap(unit lgMultiMap)
  • list miltimap(unit lgMultiMap)
  • bijective map(unit lgBiMap)
  • sparse 2D table(unit lgTable2D)
  • disjoint set(unit lgHashSet)
  • AVL tree(unit lgAvlTree)
  • red-black tree(unit lgRbTree)
  • some treap variants(unit lgTreap)
  • general rooted tree(unit lgRootTree)
  • sparse labeled undirected graph(unit lgSimpleGraph)
  • sparse labeled directed graph(unit lgSimpleDigraph)

features:

  • extended IEnumearble interface - filtering, mapping, etc.
  • lite containers based on advanced records

Implemented graph features:

  • core functions:
    • vertices/edges addition/removal/query/enumeration, edge contraction, degree
    • load/save to own binary format, primitive export to DOT format
  • connectivity:
    • connected/strongly connected components, bipartite detection, degeneracy, k-core
    • articulation points, bridges, biconnected components
    • edge-connectivity
  • traversals:
    • BFS/DFS traversals with visitors,
    • cycle/negative cycle detection,
    • topological sort
  • operations:
    • induced subgraphs, complement, reverse, union, intersect, symmetric difference,
  • chordality testing
  • planarity testing: FMR Left-Right Planarity algorithm
  • distance within graph:
    • eccentricity, radius, diameter, center, periphery
  • matching:
    • maximum cardinality matching on bipartite/arbitrary graphs
    • minimum/maximum weight matching on bipartite graphs
  • dominators in flowgraps: simple iterative and Semi-NCA algorithms
  • some suggestions for NP-hard problems:
    • maximum independent set, maximal independent sets enumeration
    • maximum clique, cliques enumeration
    • minimum vertex cover, minimal vertex covers enumeration
    • vertex coloring, approximations and exact
    • minimum dominating set
    • Hamiltonian cycles and paths
    • local search TSP approximations, BnB TSP solver
  • minimum spanning trees: Prims's and Kruskal's algorithms
  • single source shortest paths:
    • Dijkstra with pairing heap, A*, Bellman-Ford-Moor with Tarjan's subtree disassembly(BFMT)
  • single pair shortest paths:
    • Dijkstra with binary heap, bidirection Dijkstra, A*, NBA*
  • all pairs shortest paths:
    • Floyd–Warshall, Johnson, BFMT
  • networks:
    • maximum flow: push/relabel, capacity scaling Dinitz
    • minimum-cost flow: Busacker-Gowen, cost scaling push/relabel algorithm
    • global minimum cut: Stoer–Wagner, Nagamochi-Ibaraki

Algorithms on arrays and vectors(mostly unit lgArrayHelpers):

  • reverse, right/left cyclic shifts
  • permutations
  • binary search
  • N-th order statistics
  • inversion counting
  • distinct values selection
  • quicksort
  • introsort
  • dual pivot quicksort
  • mergesort
  • timsort(unit lgMiscUtils)
  • counting sort
  • radix sort
  • translation of Orson Peters' PDQSort algorithm
  • static segment tree
  • ...

Algorithms on strings

  • Boyer-Moore string matching algorithm(in Fast Search variant), case sensitive and case insensitive(unit lgStrHelpers)
  • Boyer-Moore-Horspool-Raita algorithm(unit lgStrHelpers)

Other:

  • non-cryptogarphic hashes(unit lgHash):
    • Yann Collet's xxHash32, xxHash64
    • Austin Appleby's MurmurHash2, MurmurHash2A, MurmurHash3_x86_32, MurmurHash64A
  • brief and dirty implementation of futures concept(unit lgAsync)
  • brief channel implementation(unit lgAsync)
  • brief implementation of thread pool(unit lgAsync)
  • 128-bit integers(unit lgInt128)
  • JSON validator/parser/generator(unit lgJson)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].