প্রকল্প সম্পর্কে
এই রিপোজিটরিটি Java-তে লেখা অ্যালগরিদম এবং ডেটা স্ট্রাকচার বাস্তবায়নের একটি সাজানো সংগ্রহ। এর উদ্দেশ্য সাধারণ কম্পিউটেশনাল কৌশলগুলির সঠিক এবং মার্জিত বাস্তবায়ন প্রদর্শন করা। এটি বিকাশকারী এবং শিক্ষার্থীদের জন্য একটি রেফারেন্স লাইব্রেরি এবং শিক্ষামূলক সম্পদ হিসেবে কাজ করে।
প্রকল্পটি প্রধান বিভাগে সংগঠিত বিস্তৃত বিষয় কভার করে:
**ডেটা স্ট্রাকচার**: ব্যালেন্সড ট্রি (AVL, Red-Black), বাইনারি সার্চ ট্রি, splay tree, dynamic array, Fenwick tree, Fibonacci heap, hashtable (একাধিক collision resolution কৌশলসহ), linked list, priority queue (binary heap, D-heap, indexed variant), queue, segment tree, sparse table, stack, suffix array, trie এবং union-find structure অন্তর্ভুক্ত।
**ডায়নামিক প্রোগ্রামিং**: ক্লাসিক সমস্যা যেমন coin change, edit distance, knapsack variant, maximum contiguous subarray, longest common/increasing/palindrome subsequence, traveling salesman problem এবং minimum weight perfect matching। এছাড়াও tiling সমস্যা এবং adhoc চ্যালেঞ্জের মতো ব্যবহারিক উদাহরণ রয়েছে।
**জ্যামিতি**: 2D এবং 3D ভেক্টর অপারেশন, circle এবং line intersection অ্যালগরিদম, closest pair of points, convex hull নির্মাণ (Graham Scan এবং Monotone Chain), polygon area ও containment পরীক্ষা, triangle area গণনা এবং ভৌগোলিক দূরত্ব নির্ণয়।
**গ্রাফ তত্ত্ব**: একটি বড় বিভাগ — tree অ্যালগরিদম (rooting, isomorphism, center, diameter, LCA), network flow অ্যালগরিদম (Ford-Fulkerson, Edmonds-Karp, Dinic's, capacity scaling, min-cost max-flow), এবং মূল অ্যালগরিদম যেমন BFS, DFS, Dijkstra's, Bellman-Ford, Floyd-Warshall, topological sort, minimum spanning tree (Kruskal's, Prim's, Boruvka's), strongly connected component (Tarjan's, Kosaraju's), articulation point, bridge এবং Eulerian path।
**লিনিয়ার অ্যালজেব্রা**: Gaussian elimination, matrix অপারেশন (determinant, inverse, multiplication, power), Freivald's algorithm এবং linear recurrence solver।
**গণিত**: সংখ্যা তত্ত্ব বিষয় যেমন Chinese Remainder Theorem, prime sieve, Euler's totient function, extended Euclidean algorithm, GCD এবং Fast Fourier Transform।
প্রকল্পটি বিল্ড সিস্টেম হিসেবে Bazel ব্যবহার করে (JDK 8+ প্রয়োজন), যেখানে পৃথক অ্যালগরিদম বা সম্পূর্ণ টেস্ট স্যুট চালানোর জন্য স্পষ্ট নির্দেশনা রয়েছে। অনেক বাস্তবায়নের সাথে William Fiset YouTube চ্যানেলে ভিডিও ব্যাখ্যা রয়েছে, যা ভিজ্যুয়াল শিক্ষার্থীদের জন্য সহায়ক। প্রতিটি অ্যালগরিদম এন্ট্রিতে সাধারণত সময় জটিলতা উল্লেখ থাকে এবং কোড বিষয় অনুযায়ী সামঞ্জস্যপূর্ণ নামকরণ কনভেনশনে সংগঠিত। রিপোজিটরিটি MIT লাইসেন্সের অধীনে প্রকাশিত এবং Bazel টেস্ট ও README URL যাচাইয়ের জন্য CI/CD ব্যাজ অন্তর্ভুক্ত।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.