Foundationপ্রথম নীতি থেকে
LEVEL 0 · Mathematical Foundations

Bipartite Graph

দ্বিপক্ষীয় গ্রাফ

Vertex-দের দুই দলে ভাগ করা যায় যেন প্রতিটা edge এক দল থেকে অন্য দলে যায়। সমতুল্যভাবে: কোনো বিজোড় দৈর্ঘ্যের cycle নেই।

also: bipartite

Theorem: graph bipartite ⟺ কোনো বিজোড় cycle নেই।

BFS দিয়ে O(V+E)-তে যাচাই করা যায় — ২ রঙে রাঙান, conflict পেলে বিজোড় cycle আছে:

color[v] = 1 - color[u]
if color[v] == color[u]: return False

অর্থাৎ bipartite মানে ঠিক χ(G) ≤ 2 — [[graph-coloring]]-এর সবচেয়ে সহজ ক্ষেত্র, আর NP-complete নয়।

যেখানে দেখা যায়:

প্রয়োগদুইটা দল
Matchingworker ↔ job
Schedulingtask ↔ time slot
Recommendationuser ↔ item
Ad servingad ↔ slot
Compilervariable ↔ register (কখনো)

Bipartite matching-এর efficient algorithm আছে (Hopcroft–Karp, O(E√V)) — যেখানে সাধারণ graph-এ matching অনেক কঠিন। এটাই কাঠামো চিনে ফেলার মূল্য: সমস্যাটা bipartite কি না জানা থাকলে অনেক দ্রুত algorithm ব্যবহার করা যায়।

প্রতিটা [[tree]] bipartite (cycle-ই নেই, তাই বিজোড় cycle-ও নেই)।