সরাসরি পর্বে যান
পর্ব ৬২ · ৮৩-এর মধ্যে · মডিউল ১০

Planar graph — Euler-এর সূত্র আর Kuratowski

Planar Graphs — Euler's Formula, Edge Bounds, Kuratowski's Theorem, Dual Graphs, Platonic Solids and Crossing Numbers

Taught in Bangla, this lesson defines planar graphs, plane drawings and faces, proves Euler's formula v − e + f = 2 by induction on edges, and derives e ≤ 3v − 6 and e ≤ 2v − 4 to show K5 and K(3,3) are not planar. It proves every planar graph has a vertex of degree at most 5, states Kuratowski's and Wagner's theorems, and covers dual graphs, the five Platonic solids, crossing numbers and the three-utilities puzzle. In-page Python checks the formula and bounds, and a real NetworkX run tests planarity.

এই পর্বে যা শিখবেন

  • Planar graph, plane drawing, face আর face-এর degree-র নির্ভুল সংজ্ঞা
  • Euler-এর সূত্রের পূর্ণ induction প্রমাণ, আর face গুনে Python-এ তার যাচাই
  • e ≤ 3v − 6, e ≤ 2v − 4 আর girth-এর সীমা থেকে K5, K3,3 আর Petersen graph-এর non-planarity
  • Kuratowski আর Wagner-এর উপপাদ্য, dual graph আর Platonic solid-এর “ঠিক পাঁচটি” প্রমাণ
  • Crossing number-এর নিম্নসীমা আর planarity-র বাস্তব প্রয়োগ

১ · Planar graph আর plane drawing — কাটাকাটি ছাড়া আঁকা

বাজারঘর তিনটি নতুন গুদাম খুলছে। প্রতিটিতে পানি, গ্যাস আর বিদ্যুতের লাইন লাগবে, আর নিরাপত্তার কারণে মাটির নিচের কোনো দুটি লাইন একে অন্যকে কাটতে পারবে না (সবকিছু একই গভীরতায়)। নয়টি লাইন কি এভাবে বসানো যায়? কাগজে চেষ্টা করলে আটটি সহজে বসে, নবমটিতে এসে আটকে যায়। এটি বহু পুরোনো “তিন ইউটিলিটির ধাঁধা”। এই পর্বের শেষে আপনি শুধু উত্তর নয়, এর পূর্ণ প্রমাণও লিখতে পারবেন।

এই পর্বে graph মানে সসীম undirected graph; উপপাদ্যের শর্তে কোথায় simple graph লাগবে, তা আলাদা করে বলা আছে। মূল সংজ্ঞাগুলো পর্ব ৫৭ “গ্রাফ — সংজ্ঞা, degree আর handshake theorem”-এ।

সংজ্ঞা ১.১ (plane graph আর planar graph)

G-এর একটি আঁকা মানে প্রতিটি vertex-এর জন্য সমতলের একটি আলাদা বিন্দু, আর প্রতিটি edge {u, v}-এর জন্য u থেকে v পর্যন্ত একটি বক্ররেখা, যা অন্য কোনো vertex-এর ওপর দিয়ে যায় না। যে আঁকায় দুটি edge শুধু সাধারণ প্রান্তে মেলে, আর কোথাও কাটে না, সেটি একটি plane graph (plane drawing). G planar, যদি তার অন্তত একটি plane drawing থাকে।

পার্থক্যটি গুরুত্বপূর্ণ: planar হওয়া graph-এর ধর্ম, আর plane graph একটি নির্দিষ্ট ছবি। নিচের বাঁ দিকে K4-এর পরিচিত ছবি: বর্গ আর দুটি কর্ণ, মাঝে একটি crossing. তবু K4 planar, কারণ ডান দিকের মতো করে কাটাকাটি ছাড়াও আঁকা যায়। একটি ছবিতে crossing থাকলে কিছুই প্রমাণ হয় না; “planar নয়” দেখাতে হলে প্রমাণ করতে হয় যে কোনো ছবিতেই crossing এড়ানো যায় না।

একই K4, দুটি আঁকা

বাঁয়ে একটি crossing (লাল বিন্দু)। ডানে plane drawing: চারটি face, f4 বাইরের অসীম অঞ্চল।

K4 drawn twice: a square with crossing diagonals, and a plane drawing with four faces f1 to f4 1234 1234 f1f2f3f4 crossing আছেplane drawing
সংজ্ঞা ১.২ (face আর তার degree)

একটি plane graph-এর আঁকা মুছে ফেললে সমতলের যে টুকরোগুলো থাকে, তার প্রতিটি একটি face. ঠিক একটি face অসীম, তাকে বলে বাইরের face (outer face). একটি face f-এর degree deg(f) হলো তার সীমানা ধরে একবার ঘুরে আসতে যত edge পেরোতে হয়, সেই সংখ্যা; কোনো edge-এর দুই পাশেই একই face থাকলে (যেমন একটি bridge) সেটি দুবার গোনা হয়।

ডান দিকের ছবিতে চারটি face, প্রতিটির degree 3 (বাইরের f4-এর সীমানা 1, 2, 3). যোগফল 3 + 3 + 3 + 3 = 12 = 2 × 6, edge-সংখ্যার ঠিক দ্বিগুণ। এটি কাকতালীয় নয়।

লেমা ১.৩ (face-এর handshake)

যেকোনো plane graph-এ সব face-এর degree-র যোগফল = 2e.

  1. প্রতিটি edge-এর দুটি পাশ। প্রতিটি পাশ ঠিক একটি face-এর সীমানা-হাঁটায় একবার আসে। — আঁকার গঠন
  2. দুই পাশে দুটি আলাদা face হলে edge-টি দুই face-এ একবার করে গোনা হয়; একই face হলে সেই face-এ দুবার। দুই ক্ষেত্রেই edge-টির অবদান ঠিক 2. — সংজ্ঞায় দুবার গোনার নিয়ম
  3. সব edge-এর অবদান যোগ করলে ∑ deg(f) = 2e. ∎ — পর্ব ৩৭-এর double counting

এটি vertex-এর handshake lemma-র হুবহু “face-রূপ”, আর পরের প্রতিটি সীমার মূল হাতিয়ার। একটি প্রয়োজনীয় তথ্য আমরা প্রমাণ ছাড়া ব্যবহার করব: সমতলে আঁকা প্রতিটি বন্ধ বক্ররেখা (যেমন একটি cycle-এর ছবি) সমতলকে ঠিক দুই ভাগে ভাগ করে, ভেতর আর বাইরে। এটি Jordan curve theorem; কথাটি স্বজ্ঞায় স্পষ্ট, কিন্তু সাধারণ বক্ররেখার জন্য এর কঠোর প্রমাণ topology-র কাজ, তাই এখানে বাদ।

একটি মানচিত্র ভাবুন: জেলার সীমানা-রেখাগুলো edge, তিন বা বেশি জেলা যেখানে মেলে সেই বিন্দুগুলো vertex, আর জেলাগুলো face; বঙ্গোপসাগর আর দেশের বাইরের সবকিছু মিলে বাইরের face. Plane graph আসলে এমন একটি মানচিত্র। আবার graph-টিকে একটি বলের গায়ে আঁকলে “বাইরের” face আর আলাদা কিছু নয়: বলটি ঘুরিয়ে যেকোনো face-কে বাইরের face বানানো যায়। তাই planar হওয়া মানে গোলকের গায়ে কাটাকাটি ছাড়া আঁকতে পারা।

২ · Euler-এর সূত্র v − e + f = 2 — প্রমাণ আর যাচাই

K4-এ 4 − 6 + 4 = 2. একটি ঘনকের ছবিতে ৮টি কোণ, ১২টি ধার, ৬টি তল: 8 − 12 + 6 = 2. একটি একা cycle Cn-এ n − n + 2 = 2 (ভেতর আর বাইরে)। প্রতিবার ২. এর কারণ নিচের উপপাদ্য।

উপপাদ্য ২.১ (Euler-এর সূত্র)

G একটি connected plane graph, যার v-টি vertex, e-টি edge আর f-টি face. তাহলে

v − e + f = 2.

প্রমাণের আগে একটি লেমা, যা পর্ব ৫৯-এর ফল থেকে সরাসরি আসে।

লেমা ২.২ (cycle-হীন connected graph)

Connected graph G-তে কোনো cycle না থাকলে e = v − 1, আর তার যেকোনো plane drawing-এ f = 1.

  1. Cycle নেই, তাই পর্ব ৫৯-এর উপপাদ্য ৪.২ অনুযায়ী প্রতিটি edge একটি bridge. একটি edge সরালে component ঠিক ১ বাড়ে (একটি edge বড়জোর দুটি component জোড়ে, আর bridge সরালে বাড়েই)। — bridge ⇔ কোনো cycle-এ নেই
  2. Edge সরালে নতুন cycle তৈরি হয় না, তাই বাকি সব edge তখনো bridge. একটি একটি করে সব e-টি edge সরালে component 1 থেকে 1 + e হয়। কিন্তু শেষে কোনো edge নেই, তাই component = v. সুতরাং v = 1 + e. — পুনরাবৃত্তি
  3. একটি face-এর সীমানা আলাদা করে আরেকটি অঞ্চল ঘিরতে হলে একটি বন্ধ রেখা লাগে, আর graph-এর বন্ধ রেখা মানে একটি cycle. Cycle নেই, তাই পুরো সমতল একটিই face: f = 1. ∎ — Jordan curve theorem-এর স্বজ্ঞা

এমন graph-ই tree, যার পূর্ণ আলোচনা মডিউল ১১-এর পর্ব ৬৫ “Tree — ধর্ম, rooted tree আর m-ary tree-এর হিসাব”-এ। এখন মূল প্রমাণ।

উপপাদ্য ২.১-এর প্রমাণ (e-এর ওপর strong induction, পর্ব ১১): দাবি P(e): “e-টি edge-এর প্রতিটি connected plane graph-এ v − e + f = 2”.

  1. ধরুন e-এর চেয়ে কম edge-এর সব connected plane graph-এ সূত্রটি সত্য। এখন e-টি edge-এর যেকোনো connected plane graph G নিন। — inductive hypothesis
  2. ক্ষেত্র ক: G-তে কোনো cycle নেই। লেমা ২.২ অনুযায়ী e = v − 1 আর f = 1, তাই v − (v − 1) + 1 = 2. (e = 0, অর্থাৎ একটি মাত্র vertex, এই ক্ষেত্রেরই অংশ: 1 − 0 + 1 = 2.) — ভিত্তি
  3. ক্ষেত্র খ: G-তে একটি cycle C আছে। C-এর একটি edge x নিন। C-এর ছবি সমতলকে ভেতর আর বাইরে ভাগ করে, তাই x-এর এক পাশের face C-এর ভেতরে আর অন্য পাশের face বাইরে: দুটি আলাদা face. — Jordan curve theorem
  4. x একটি cycle-এ আছে, তাই bridge নয়, আর G − x তখনো connected. — পর্ব ৫৯, উপপাদ্য ৪.২
  5. x মুছলে তার দুই পাশের দুটি face এক হয়ে যায়, বাকি face অপরিবর্তিত। তাই G − x-এ v′ = v, e′ = e − 1, f′ = f − 1. — গণনা
  6. G − x-এর edge e − 1টি, তাই inductive hypothesis অনুযায়ী v − (e − 1) + (f − 1) = 2, অর্থাৎ v − e + f = 2. ∎

দুটি সূক্ষ্ম জায়গা লক্ষ করুন। এক, ধাপ ৩-এ মুছতে হয় একটি cycle-এর edge; যেকোনো edge মুছলে graph ভেঙে যেতে পারে (bridge), তখন hypothesis খাটে না, আর f-ও কমে না। দুই, induction-এর দিক: আমরা যেকোনো বড় G থেকে শুরু করে ছোটটিতে নেমেছি। উল্টো পথে “ছোট graph-এ একটি edge যোগ করে সব বড় graph পাওয়া যায়” ধরে নেওয়া graph-এর induction-এর পরিচিত ভুল (পর্ব ৫৯-এর অনুশীলন ৪ দেখুন)।

Six hubs on a hexagon with chords A–C and A–D; deleting cycle edges one at a time merges faces ABC DEF f1 f2 f3 f1+f2 এক face বাইরের face সবসময় আছে
বাজারঘরের ৬টি হাবের রিং-নেটওয়ার্ক
v
e
f
v − e + f
  1. শুরু। ছয়টি হাব একটি রিং-রাস্তায় (ষড়ভুজ) যুক্ত, সঙ্গে A থেকে C আর D-তে দুটি সরাসরি রাস্তা। v = 6, e = 8; ভেতরে তিনটি face (ABC, ACD, ADEF) আর বাইরের একটি, তাই f = 4, আর 6 − 8 + 4 = 2.
  2. A–C মুছুন। A–C ত্রিভুজ ABC-এর একটি edge, তাই bridge নয়। এর দুই পাশের face f1 আর f2 মিলে একটি face. e আর f দুটোই ১ কমল: 6 − 7 + 3 = 2.
  3. A–D মুছুন। A–D এখনো cycle A, B, C, D, A-এর edge. দুই পাশের face (f1+f2 আর f3) মিলে ষড়ভুজের পুরো ভেতরটা এক face: 6 − 6 + 2 = 2.
  4. F–A মুছুন। F–A ষড়ভুজ-cycle-এর একটি edge; তার একদিকে ভেতরের face, অন্যদিকে বাইরের। মুছলে ভেতর আর বাইরে এক হয়: 6 − 5 + 1 = 2.
  5. ভিত্তি। বাকি A, B, C, D, E, F একটি path: কোনো cycle নেই, তাই লেমা ২.২ অনুযায়ী e = v − 1 = 5 আর f = 1. Induction ঠিক উল্টো দিকে এই ধাপগুলো উঠে আসে: প্রতিটি ধাপে e আর f একসঙ্গে ১ বাড়ে, তাই v − e + f বদলায় না।

দুটি অনুসিদ্ধান্ত। (১) একই connected planar graph-কে যেভাবেই কাটাকাটি ছাড়া আঁকুন, face-এর সংখ্যা f = e − v + 2, অর্থাৎ আঁকার ওপর নির্ভর করে না। (২) G-তে c-টি component থাকলে v − e + f = 1 + c: প্রতিটি component আলাদাভাবে সূত্র মানে, কিন্তু বাইরের face সবার একটিই, তাই c-টি সূত্র যোগ করলে বাইরের face c বার না গুনে একবার গুনতে হয়, যোগফল 2c − (c − 1) = c + 1. AI সহকারী প্রায়ই disconnected graph-এও সোজা “= 2” বসিয়ে দেয়; শর্তটি লক্ষ রাখুন।

এবার যন্ত্রে যাচাই। নিচের ব্লক সোজা-রেখার কয়েকটি আঁকা বানায়, আর face সত্যিই গুনে বের করে, কোনো সূত্র বসিয়ে নয়। কৌশলটির নাম rotation system: প্রতিটি vertex-এর প্রতিবেশীদের কোণ অনুযায়ী ঘড়ির কাঁটার ক্রমে সাজানো হয়, তারপর একটি “edge-এর দিক” থেকে শুরু করে প্রতিটি vertex-এ পরের প্রতিবেশীতে ঘুরে একটি face-এর সীমানা ধরে হাঁটা হয়। যতবার নতুন হাঁটা শুরু করতে হয়, ততগুলো face. প্রথমবার চালালে ব্রাউজারে Python (Pyodide) নামতে কয়েক সেকেন্ড লাগে।

import math, random
def faces(pos, edges):                   # count faces of a straight-line drawing
    adj = {v: [] for v in pos}
    for u, v in edges:
        adj[u].append(v); adj[v].append(u)
    for v in adj:                        # rotation system: neighbours sorted by angle
        adj[v].sort(key=lambda w: math.atan2(pos[w][1] - pos[v][1], pos[w][0] - pos[v][0]))
    seen, f = set(), 0
    for u in adj:
        for v in adj[u]:
            if (u, v) in seen: continue
            f += 1; a, b = u, v          # walk once around a new face
            while (a, b) not in seen:
                seen.add((a, b)); nb = adj[b]
                a, b = b, nb[(nb.index(a) - 1) % len(nb)]
    return f
def grid(a, b):
    pos = {(i, j): (i, j) for i in range(a) for j in range(b)}
    E = [((i, j), (i + 1, j)) for i in range(a - 1) for j in range(b)]
    return pos, E + [((i, j), (i, j + 1)) for i in range(a) for j in range(b - 1)]
def wheel(n):
    pos = {k: (math.cos(2 * math.pi * k / n), math.sin(2 * math.pi * k / n)) for k in range(n)}
    return pos | {'hub': (0, 0)}, [(k, (k + 1) % n) for k in range(n)] + [('hub', k) for k in range(n)]
def stacked(k, rnd):                     # k times: new point inside a random triangle
    pos, E, tris = {0: (0, 0), 1: (10, 0), 2: (5, 9)}, [(0, 1), (1, 2), (2, 0)], [(0, 1, 2)]
    for v in range(3, 3 + k):
        a, b, c = tris.pop(rnd.randrange(len(tris)))
        pos[v] = tuple((pos[a][i] + pos[b][i] + pos[c][i]) / 3 for i in (0, 1))
        E += [(v, a), (v, b), (v, c)]; tris += [(a, b, v), (b, c, v), (a, c, v)]
    return pos, E
rnd = random.Random(62)
for name, (pos, E) in [('grid 3x4', grid(3, 4)), ('wheel W8', wheel(8)),
                       ('stack 9', stacked(6, rnd)), ('stack 40', stacked(37, rnd))]:
    v, e, f = len(pos), len(E), faces(pos, E)
    print(f'{name:9} v={v:2} e={e:3} f={f:2}  v-e+f={v - e + f}  3v-6={3 * v - 6}')

আসল আউটপুট (ব্রাউজারের Python):

grid 3x4  v=12 e= 17 f= 7  v-e+f=2  3v-6=30
wheel W8  v= 9 e= 16 f= 9  v-e+f=2  3v-6=21
stack 9   v= 9 e= 21 f=14  v-e+f=2  3v-6=21
stack 40  v=40 e=114 f=76  v-e+f=2  3v-6=114

চারটি একেবারে আলাদা ধরনের আঁকায় গোনা face থেকে প্রতিবার v − e + f = 2. 3 × 4 গ্রিডে ৬টি ছোট বর্গ আর বাইরের face, মোট ৭. Wheel W8-এ ৮টি ত্রিভুজ আর বাইরের একটি। শেষ দুটি সারিতে একটি ত্রিভুজের ভেতরে বারবার নতুন বিন্দু বসিয়ে তিন কোণের সঙ্গে জোড়া হয়েছে; সেখানে প্রতিটি face ত্রিভুজ, আর লক্ষ করুন e ঠিক 3v − 6 (২১ আর ১১৪)। পরের অংশ দেখাবে, এটিই সর্বোচ্চ সম্ভব। সোজা রেখায় আঁকা কোনো সীমাবদ্ধতা নয়: প্রতিটি simple planar graph-এর সোজা-রেখার plane drawing আছে (Fáry-এর উপপাদ্য, ১৯৪৮ সালে প্রকাশিত বলে উল্লেখ করা হয়; Wagner আর Stein-ও স্বাধীনভাবে একই ফল পান বলে জানা যায়)।

৩ · Edge-এর সীমা: e ≤ 3v − 6 আর e ≤ 2v − 4

Euler-এর সূত্রে v আর e জানা থাকলে f জানা যায়। লেমা ১.৩-এর সঙ্গে মেলালে একটি শক্তিশালী সীমা বের হয়: planar graph-এ edge বেশি থাকতে পারে না।

উপপাদ্য ৩.১ (planar graph-এর edge-সীমা)

G একটি simple planar graph, v ≥ 3. তাহলে e ≤ 3v − 6. সমতা হয় ঠিক তখন, যখন একটি plane drawing-এ প্রতিটি face একটি ত্রিভুজ (এমন graph-কে triangulation বা maximal planar বলে)।

  1. প্রথমে ধরুন G connected, আর একটি plane drawing নিন। v ≥ 3, তাই e ≥ 2. Simple graph-এ loop নেই (দৈর্ঘ্য ১-এর face অসম্ভব), parallel edge নেই (দৈর্ঘ্য ২-এর face অসম্ভব), আর একটি মাত্র edge-এর graph (যার একমাত্র face-এর degree 2) এখানে বাদ। তাই প্রতিটি face-এর degree ≥ 3. — simple, v ≥ 3
  2. লেমা ১.৩: 2e = ∑ deg(f) ≥ 3f, তাই f ≤ 2e/3. — face-এর handshake
  3. Euler: 2 = v − e + f ≤ v − e + 2e/3 = v − e/3, অর্থাৎ e ≤ 3v − 6. সমতা মানে ধাপ ২-এ সমতা, অর্থাৎ প্রতিটি face-এর degree ঠিক 3. — উপপাদ্য ২.১
  4. G connected না হলে: প্রতিটি component-এর বাইরের face-এর সীমানার একটি vertex থেকে পরের component-এর এমন একটি vertex-এ কাটাকাটি ছাড়াই একটি নতুন edge টানা যায় (component-গুলো পাশাপাশি আঁকুন)। এতে G planar আর simple থাকে, e শুধু বাড়ে, আর connected graph-টির জন্য ধাপ ১–৩ খাটে। ∎

অনুসিদ্ধান্ত: K5 planar নয়। v = 5, e = C(5, 2) = 10, অথচ 3v − 6 = 9. সীমা ভাঙে, তাই কোনো plane drawing নেই। লক্ষ করুন যুক্তির ধরন: “আঁকার চেষ্টা করে পারিনি” নয়, বরং “থাকলে Euler আর face-এর handshake মিলে 10 ≤ 9 দাঁড়াত”।

Graph-এ ত্রিভুজ না থাকলে প্রতিটি face অন্তত চার edge দিয়ে ঘেরা, তাই সীমা আরও কড়া হয়। সাধারণভাবে, graph-এর সবচেয়ে ছোট cycle-এর দৈর্ঘ্যকে বলে girth g.

উপপাদ্য ৩.২ (ত্রিভুজহীন আর girth-এর সীমা)

G simple planar, v ≥ 3, আর কোনো ত্রিভুজ নেই। তাহলে e ≤ 2v − 4. আরও সাধারণভাবে, G-তে cycle থাকলে আর girth g হলে, e ≤ g(v − 2)/(g − 2).

  1. Connected ক্ষেত্রে (বাকিটা উপপাদ্য ৩.১-এর ধাপ ৪-এর মতো): G-তে cycle আছে, তাই প্রতিটি face-এর সীমানায় একটি cycle থাকে, যার দৈর্ঘ্য ≥ g; ফলে deg(f) ≥ g. (যে face-এর সীমানায় cycle নেই, তা শুধু cycle-হীন graph-এ সম্ভব।) — girth-এর সংজ্ঞা
  2. 2e ≥ g · f, তাই f ≤ 2e/g. Euler: 2 ≤ v − e + 2e/g, অর্থাৎ e(g − 2)/g ≤ v − 2. — উপপাদ্য ২.১
  3. সাজালে e ≤ g(v − 2)/(g − 2). ত্রিভুজ না থাকলে g ≥ 4, আর ডান পাশ g বাড়লে কমে, তাই e ≤ 4(v − 2)/2 = 2v − 4. ∎ (g = 3 দিলে 3v − 6, উপপাদ্য ৩.১।)

অনুসিদ্ধান্ত: K3,3 planar নয়, আর তিন ইউটিলিটির ধাঁধার উত্তর “অসম্ভব”। তিনটি গুদাম আর তিনটি ইউটিলিটি, প্রতিটি গুদাম প্রতিটি ইউটিলিটির সঙ্গে: ঠিক K3,3. এটি bipartite, আর bipartite graph-এ কোনো বিজোড় cycle নেই (পর্ব ৫৭), তাই ত্রিভুজও নেই। নিচের stepper পুরো যুক্তিটি সংখ্যা দিয়ে চালায়।

K3,3 as the utilities puzzle, drawn on a hexagon with exactly one crossing H1H2H3 WGE H = গুদাম; W পানি, G গ্যাস, E বিদ্যুৎ
K3,3: v = 6, e = 9
যুক্তি
সংখ্যা
  1. মডেল। গুদাম H1, H2, H3 এক দল, পানি W, গ্যাস G, বিদ্যুৎ E আরেক দল; প্রতিটি গুদাম প্রতিটি ইউটিলিটির সঙ্গে যুক্ত। এটি K3,3: v = 6, e = 3 × 3 = 9, simple আর connected.
  2. ত্রিভুজ নেই। প্রতিটি edge দুই দলের মধ্যে, তাই যেকোনো cycle-এ দল পালাক্রমে আসে আর দৈর্ঘ্য জোড়। সবচেয়ে ছোট cycle-এর দৈর্ঘ্য ৪ (যেমন H1, W, H2, G, H1): girth = 4.
  3. বিরোধের জন্য অনুমান। ধরুন একটি plane drawing আছে। G connected, তাই Euler অনুযায়ী f = 2 − v + e = 2 − 6 + 9 = 5.
  4. Face-এর degree. ত্রিভুজ নেই, তাই প্রতিটি face-এর সীমানায় অন্তত ৪টি edge. পাঁচটি face মিলিয়ে ∑ deg(f) ≥ 4 × 5 = 20.
  5. বিরোধ। লেমা ১.৩ অনুযায়ী ∑ deg(f) = 2e = 18. কিন্তু 18 ≥ 20 মিথ্যা। তাই কোনো plane drawing নেই: K3,3 planar নয়। একই কথা এক লাইনে: e = 9 > 2v − 4 = 8.
  6. কতটা কাছাকাছি। ছবিতে ষড়ভুজের ছয় বাহু, দুটি কর্ণ ভেতরে আর H2–E বাইরে দিয়ে ঘুরে: মাত্র একটি crossing (লাল বৃত্ত)। তাই সমতলে ধাঁধার উত্তর “অসম্ভব”, কিন্তু একটি লাইন অন্য গভীরতায় নিলে (একটি “সেতু”) কাজ হয়ে যায়।

সবচেয়ে সাধারণ ভুল: সীমা মানলে graph planar, এমন ভাবা। e ≤ 3v − 6 শুধু একটি আবশ্যিক শর্ত: ভাঙলে planar নয়, কিন্তু মানলে কিছুই প্রমাণ হয় না। K3,3 নিজেই 9 ≤ 12 মেনে চলে, তবু planar নয়; তাকে ধরতে কড়া সীমা 2v − 4 লাগল। আর K3,3-এর সঙ্গে একটি ঝুলন্ত vertex জুড়ে দিলে (v = 7, e = 10) তিনটি সীমাই মানে, অথচ graph-টি planar নয়, কারণ তার ভেতরে K3,3 বসে আছে।

নিচের ব্লক এই সীমাগুলোকে একটি দ্রুত ছাঁকনি হিসেবে চালায়। Girth বের হয় প্রতিটি vertex থেকে BFS করে: BFS-এ একটি “পেছনের” edge {x, y} পেলে দুটি শাখা জুড়ে dist(x) + dist(y) + 1 দৈর্ঘ্যের একটি বন্ধ হাঁটা পাওয়া যায়, আর সব শুরুর বিন্দু মিলিয়ে সবচেয়ে ছোটটি girth. Graph-গুলোর সঙ্গে Q3 (ঘনক) আর Petersen graph-ও আছে।

from fractions import Fraction
def graph(edges):
    adj = {}
    for u, v in edges:
        adj.setdefault(u, set()).add(v); adj.setdefault(v, set()).add(u)
    return adj
def girth(adj):                          # shortest cycle, BFS from every vertex
    best = None
    for s in adj:
        dist, par, q = {s: 0}, {s: None}, [s]
        for x in q:
            for y in adj[x]:
                if y not in dist:
                    dist[y], par[y] = dist[x] + 1, x; q.append(y)
                elif par[x] != y:
                    L = dist[x] + dist[y] + 1
                    best = L if best is None else min(best, L)
    return best
K = lambda n: [(i, j) for i in range(n) for j in range(i + 1, n)]
K33 = [(a, b) for a in 'ABC' for b in 'xyz']
petersen = [(i, (i + 1) % 5) for i in range(5)] + [(i, i + 5) for i in range(5)] \
         + [(5 + i, 5 + (i + 2) % 5) for i in range(5)]
Q3 = [(a, b) for a in range(8) for b in range(a + 1, 8) if bin(a ^ b).count('1') == 1]
tests = {'K4': K(4), 'K5': K(5), 'K5 - edge': K(5)[1:], 'K3,3': K33,
         'K3,3 + leaf': K33 + [('z', 'L')], 'Q3': Q3, 'Petersen': petersen}
for name, E in tests.items():
    adj = graph(E); v, e, g = len(adj), len(E), girth(adj)
    bound = Fraction(g * (v - 2), g - 2)            # e <= g(v-2)/(g-2), v >= 3
    verdict = 'NOT planar (proved)' if e > bound else 'passes: no conclusion'
    print(f'{name:12} v={v:2} e={e:2} girth={g} 3v-6={3*v-6:2} bound={float(bound):5.2f}  {verdict}')

আসল আউটপুট (ব্রাউজারের Python):

K4           v= 4 e= 6 girth=3 3v-6= 6 bound= 6.00  passes: no conclusion
K5           v= 5 e=10 girth=3 3v-6= 9 bound= 9.00  NOT planar (proved)
K5 - edge    v= 5 e= 9 girth=3 3v-6= 9 bound= 9.00  passes: no conclusion
K3,3         v= 6 e= 9 girth=4 3v-6=12 bound= 8.00  NOT planar (proved)
K3,3 + leaf  v= 7 e=10 girth=4 3v-6=15 bound=10.00  passes: no conclusion
Q3           v= 8 e=12 girth=4 3v-6=18 bound=12.00  passes: no conclusion
Petersen     v=10 e=15 girth=5 3v-6=24 bound=13.33  NOT planar (proved)

তিনটি graph ধরা পড়েছে, আর প্রতিটির পেছনে একটি সম্পূর্ণ প্রমাণ আছে। Petersen graph সবচেয়ে মজার: 3v − 6 = 24 আর 2v − 4 = 16 দুটোই সে মানে (১৫টি edge), কিন্তু girth 5, তাই সীমা 5 · 8 / 3 ≈ 13.33 < 15. K4, K5 − edge আর Q3 সত্যিই planar (তিনটিরই plane drawing সহজে আঁকা যায়, আর K4 আর K5 − edge-এ e = 3v − 6, অর্থাৎ triangulation). কিন্তু “K3,3 + leaf”-ও “passes” পেয়েছে, অথচ সে planar নয়। “passes: no conclusion” লেখাটি তাই ইচ্ছাকৃত: ছাঁকনি পেরোনো মানে শুধু এই যুক্তিতে ধরা পড়েনি।

৪ · প্রতিটি planar graph-এ degree ≤ 5-এর একটি vertex

e ≤ 3v − 6 বলে planar graph-এ edge “গড়ে” কম। Handshake lemma দিয়ে কথাটি vertex-এর ভাষায় আনা যায়, আর পর্ব ৬৩-এর রং করার প্রমাণগুলো ঠিক এই তথ্যের ওপর দাঁড়িয়ে।

উপপাদ্য ৪.১

প্রতিটি simple planar graph-এ এমন একটি vertex আছে, যার degree ≤ 5.

  1. v ≤ 2 হলে প্রতিটি degree ≤ 1, কাজ শেষ। ধরুন v ≥ 3. — ছোট ক্ষেত্র
  2. বিরোধের জন্য ধরুন প্রতিটি vertex-এর degree ≥ 6. Handshake lemma: 2e = ∑ deg(v) ≥ 6v, তাই e ≥ 3v. — handshake lemma
  3. কিন্তু উপপাদ্য ৩.১ অনুযায়ী e ≤ 3v − 6 < 3v. বিরোধ। ∎

একই হিসাব আরও বেশি বলে: গড় degree 2e/v ≤ 6 − 12/v < 6. সীমা 5 নিখুঁত: icosahedron (২০টি ত্রিভুজ-তলের ঘনবস্তু)-এর graph planar আর প্রতিটি vertex-এর degree ঠিক 5 (v = 12, e = 30 = 3 · 12 − 6). তাই “degree ≤ 4-এর vertex সবসময় আছে” মিথ্যা; §৯-এ এই মিথ্যা দাবির একটি “প্রমাণ” ধরা হবে।

প্রয়োগের ঝলক: ছয় রঙের উপপাদ্য। v-এর ওপর induction: যেকোনো simple planar G-তে degree ≤ 5-এর একটি vertex x নিন, G − x (এখনো planar) কে inductive hypothesis দিয়ে ৬ রঙে রং করুন, তারপর x-এর বড়জোর ৫টি প্রতিবেশী বড়জোর ৫টি রং নেয়, তাই x-এর জন্য একটি রং বাকি থাকে। Induction আবার সঠিক দিকে: যেকোনো বড় graph থেকে একটি vertex সরিয়ে নামা। পাঁচ আর চার রঙের অনেক গভীর গল্প পর্ব ৬৩ “Graph coloring — chromatic number, scheduling আর চার রঙের উপপাদ্য”-এ।

৫ · Kuratowski-এর উপপাদ্য — non-planar graph-এর সম্পূর্ণ চরিত্র

সীমাগুলো কিছু graph ধরে, সব নয়। আসল প্রশ্ন: planar নয় এমন প্রতিটি graph-এর ভেতরে কি কোনো একটি “দোষী” কাঠামো আছে? উত্তর হ্যাঁ, আর দোষী মাত্র দুটি: K5 আর K3,3, একটু ছদ্মবেশে।

সংজ্ঞা ৫.১ (subdivision আর homeomorphism)

একটি edge {u, v}-এর মাঝে নতুন degree-2 vertex w বসিয়ে তাকে u–w–v path-এ বদলানো হলো edge-টির subdivision. G-এর edge-গুলোকে এভাবে বারবার ভাঙলে যে graph পাওয়া যায়, সেটি G-এর একটি subdivision. দুটি graph homeomorphic, যদি দুজনেরই কোনো subdivision isomorphic হয় (অর্থাৎ degree-2 vertex “মসৃণ” করে দুটিকে একই graph-এ আনা যায়)।

Subdivision ছবির কিছুই বদলায় না: একটি রেখার মাঝে একটি বিন্দু আঁকা মাত্র। তাই G planar ⇔ G-এর যেকোনো subdivision planar. আর planar graph-এর প্রতিটি subgraph planar (ছবি থেকে কিছু মুছে দিলে কাটাকাটি তৈরি হয় না)। এই দুটি মিলিয়ে সহজ দিকটি প্রমাণ হয়ে যায়: G-এর ভেতরে K5 বা K3,3-এর কোনো subdivision subgraph হিসেবে থাকলে G planar হতে পারে না, কারণ তা হলে সেই subdivision, আর তাই K5 বা K3,3, planar হতো। কঠিন দিকটি একটি বিখ্যাত উপপাদ্য।

উপপাদ্য ৫.২ (Kuratowski, ১৯৩০)

একটি সসীম graph planar যদি এবং কেবল যদি তার কোনো subgraph K5 বা K3,3-এর subdivision না হয়।

কঠিন দিকের (“K5 বা K3,3-এর subdivision না থাকলে planar”) প্রমাণ কয়েক পাতার, সাধারণত connectivity-র ওপর induction আর কয়েকটি ক্ষেত্র-বিশ্লেষণ দিয়ে করা হয়; এখানে বাদ রাখা হলো, graph theory-র মানসম্মত পাঠ্যবইয়ে (যেমন Diestel বা West-এর বই) পাবেন। একটি সমতুল্য রূপ Klaus Wagner ১৯৩৭ সালে দেন, যাতে subdivision-এর জায়গায় minor: কিছু vertex আর edge মুছে আর কিছু edge সংকুচিত করে (edge contraction, যা পর্ব ৪৩-এর Karger-এর algorithm-এ দেখেছেন) যে graph পাওয়া যায়।

উপপাদ্য ৫.৩ (Wagner, ১৯৩৭)

একটি সসীম graph planar যদি এবং কেবল যদি K5 বা K3,3 তার minor নয়।

Petersen graph দুটি রূপের পার্থক্য সুন্দরভাবে দেখায়। বাইরের পাঁচভুজ 0–4, ভেতরের তারা 5–9, আর পাঁচটি “স্পোক” i–(i + 5). পাঁচটি স্পোক সংকুচিত করলে প্রতিটি নতুন vertex i বাইরের i ± 1 আর তারার i ± 2-এর সঙ্গে যুক্ত, অর্থাৎ বাকি চারজনের সবার সঙ্গে: K5, তাই K5 একটি minor. অথচ K5-এর কোনো subdivision Petersen-এর ভেতরে নেই, কারণ তার জন্য degree ≥ 4-এর পাঁচটি vertex লাগত, আর Petersen-এর সব degree 3. Kuratowski-এর রূপে দোষী তাই K3,3-এর একটি subdivision. নিচে একটি সত্যিকারের planarity-পরীক্ষক দিয়ে সেটি খুঁজে বের করা হলো।

সত্যিকারের run. NetworkX 3.7 (BSD লাইসেন্স) আর CPython 3.12.13 দিয়ে একটি ছোট প্রজেক্টে নিচের স্ক্রিপ্ট চালানো হয়েছে। check_planarity(G, counterexample=True) planar না হলে একটি Kuratowski subgraph ফেরত দেয়; আমরা তার degree গুনে দেখি সেটি কোন ধরনের।

~/bazarghar-dm$ cat kuratowski_check.py   # মূল অংশ
for name, G in graphs.items():
    ok, cert = nx.check_planarity(G, counterexample=True)
    ...  # planar হলে faces = 2 - v + e, না হলে cert-এর degree-তালিকা
P = nx.petersen_graph()          # outer 0-4, inner 5-9, spokes i -- i+5
for i in range(5):
    P = nx.contracted_nodes(P, i, i + 5, self_loops=False)

~/bazarghar-dm$ uv run python kuratowski_check.py
K5: NOT planar; Kuratowski subgraph v=5 e=10 degrees=[4, 4, 4, 4, 4]
K3,3: NOT planar; Kuratowski subgraph v=6 e=9 degrees=[3, 3, 3, 3, 3, 3]
Petersen: NOT planar; Kuratowski subgraph v=9 e=12 degrees=[2, 2, 2, 3, 3, 3, 3, 3, 3]
Q3: planar, v=8 e=12 faces=6
icosahedron: planar, v=12 e=30 faces=20
Petersen, 5 spokes contracted: 5 vertices, 10 edges, is K5: True

Petersen-এর জন্য পাওয়া subgraph-এ ৯টি vertex আর ১২টি edge: ৬টি degree-3 আর ৩টি degree-2. তিনটি degree-2 vertex মসৃণ করলে ৬টি vertex আর 12 − 3 = 9টি edge থাকে, প্রতিটির degree 3: এটি K3,3 (ক্ষুদ্রতম আকারে K5-এর জন্য degree 4 লাগত)। অর্থাৎ পরীক্ষকটি শুধু “না” বলেনি, একটি প্রমাণপত্র দিয়েছে, যা হাতে মিলিয়ে দেখা যায়। ঘনক Q3-এ ৬টি face (ছয়টি তল) আর icosahedron-এ ২০টি, Euler-এর সূত্রের সঙ্গে মিল রেখে। শেষ লাইন স্পোক সংকোচনে K5 minor নিশ্চিত করে।

Planarity কত দ্রুত পরীক্ষা করা যায়? সব subgraph-এ Kuratowski-কাঠামো খোঁজা সূচকীয় সময়ের কাজ। কিন্তু John Hopcroft আর Robert Tarjan ১৯৭৪ সালে দেখান যে DFS-ভিত্তিক একটি algorithm রৈখিক সময়ে, O(v) ধাপে, planarity ঠিক করতে পারে বলে উল্লেখ করা হয় (DFS-এর কোড DSA কোর্সের পর্ব ৪১-এ)। লক্ষ করুন, planar graph-এ e ≤ 3v − 6, তাই O(v + e) আর O(v) একই কথা। পরে আরও সহজ রৈখিক algorithm এসেছে; NetworkX-এর নথিপত্র অনুযায়ী এটি “left-right” planarity test ব্যবহার করে।

৬ · Dual graph — face হয়ে যায় vertex

মানচিত্রের প্রশ্ন সাধারণত জেলা নিয়ে, সীমানার মোড় নিয়ে নয়: কোন দুটি জেলা পাশাপাশি? এই প্রশ্নের graph হলো dual.

সংজ্ঞা ৬.১ (dual graph)

Plane graph G-এর dual G* বানাতে প্রতিটি face-এর ভেতরে একটি নতুন vertex বসান। G-এর প্রতিটি edge x-এর জন্য, x-এর দুই পাশের face-দুটির vertex জুড়ে একটি edge x* আঁকুন, যা শুধু x-কে একবার কাটে। x একটি bridge হলে দুই পাশে একই face, তাই x* একটি loop.

সংজ্ঞা থেকে সরাসরি: connected G-এর জন্য v* = f, e* = e, আর (G* নিজে plane graph বলে, আর প্রমাণ এখানে বাদ রেখে) f* = v. G*-এ একটি face-vertex-এর degree = সেই face-এর degree, তাই লেমা ১.৩ আসলে G*-এর সাধারণ handshake lemma. Euler-এর সূত্র dual-এ গেলেও অক্ষত: v* − e* + f* = f − e + v = 2.

Gv, e, fdual G*মন্তব্য
K4 (tetrahedron)4, 6, 4K4নিজেই নিজের dual
ঘনক Q38, 12, 6octahedron (6, 12, 8)৬টি বর্গ-তল → ৬টি degree-4 vertex
dodecahedron20, 30, 12icosahedron (12, 30, 20)পঞ্চভুজ-তল → degree-5 vertex
cycle Cnn, n, 2দুটি vertex, nটি parallel edgedual সাধারণত multigraph
wheel Wnn + 1, 2n, n + 1Wnwheel-ও নিজের dual

দুটি সতর্কতা। এক, dual নির্ভর করে আঁকার ওপর: একই planar graph-এর দুটি আলাদা plane drawing-এর dual non-isomorphic হতে পারে, কারণ face-গুলোর সীমানা বদলে যায়। দুই, dual-এর ভাষায় পুরোনো সীমা নতুন সীমা দেয়: G-এ প্রতিটি vertex-এর degree ≥ 3 হলে G*-এর প্রতিটি face-এর degree ≥ 3, তাই উপপাদ্য ৩.১-এর যুক্তি G*-এ চালালে e ≤ 3f − 6. মানচিত্রের রং করার সমস্যাও এভাবে আসে: পাশাপাশি জেলায় ভিন্ন রং দেওয়া মানে dual graph-এর vertex রং করা। এই অনুবাদই চার রঙের উপপাদ্যকে graph theory-র প্রশ্ন বানিয়েছে (পর্ব ৬৩)।

৭ · Platonic solid — কেন ঠিক পাঁচটি

একটি উত্তল ঘনবস্তুর (convex polyhedron) একটি তলের ঠিক ওপরে চোখ রেখে তাকালে বাকি সব কোণ আর ধার সেই তলের ভেতরে কাটাকাটি ছাড়া দেখা যায় (এই ছবিকে Schlegel diagram বলে)। তাই প্রতিটি উত্তল ঘনবস্তুর কোণ আর ধার একটি connected plane graph, যার face হলো তলগুলো, আর Euler-এর সূত্র ঘনবস্তুর জন্যও খাটে: কোণ − ধার + তল = 2. ইতিহাসে সূত্রটি এই রূপেই প্রথম এসেছিল।

উপপাদ্য ৭.১ (Platonic solid)

ধরুন একটি connected plane graph-এ প্রতিটি face-এর degree p আর প্রতিটি vertex-এর degree q, যেখানে p, q ≥ 3 (যেকোনো সুষম উত্তল ঘনবস্তুর graph এমন)। তাহলে (p, q) পাঁচটির একটি: (3, 3), (3, 4), (4, 3), (3, 5), (5, 3); আর প্রতিটির v, e, f নির্দিষ্ট।

  1. Face-এর handshake: pf = 2e. Vertex-এর handshake: qv = 2e. তাই f = 2e/p, v = 2e/q. — লেমা ১.৩ আর handshake lemma
  2. Euler-এ বসালে 2e/q − e + 2e/p = 2. দুই পাশকে 2e দিয়ে ভাগ করলে 1/q + 1/p − 1/2 = 1/e. — উপপাদ্য ২.১
  3. e > 0, তাই 1/p + 1/q > 1/2. গুণ করে সাজালে 2p + 2q > pq, অর্থাৎ (p − 2)(q − 2) < 4. — বীজগণিত
  4. p − 2 আর q − 2 ধনাত্মক পূর্ণসংখ্যা, গুণফল 1, 2 বা 3: (1,1), (1,2), (2,1), (1,3), (3,1). অর্থাৎ (p, q) = (3,3), (3,4), (4,3), (3,5), (5,3). — সব ক্ষেত্র গোনা
  5. প্রতিটির জন্য 1/e = 1/p + 1/q − 1/2 থেকে e, তারপর v আর f. পাঁচটিই সত্যিই ঘনবস্তু হিসেবে আছে: tetrahedron, octahedron, cube, icosahedron, dodecahedron. ∎

এই প্রমাণ একটি “গণনার” উপপাদ্য: graph-এর সম্ভাব্য ধরন পাঁচটির বেশি নয়। প্রতিটি ধরনের ঘনবস্তু যে জ্যামিতিকভাবে একটিই (আকার বাদে), সেটি আলাদা জ্যামিতিক যুক্তি, যা এখানে বাদ। সীমান্তের ক্ষেত্রগুলোও শিক্ষণীয়: (4, 4), (3, 6), (6, 3)-এ 1/p + 1/q = 1/2 ঠিক, অর্থাৎ “e অসীম”: এগুলো সমতলের বর্গ, ত্রিভুজ আর ষড়ভুজের টাইলস, যা কখনো বন্ধ হয় না।

1p = 3, q = 32p = 3, q = 43p = 3, q = 54p = 3, q ≥ 65p = 4, q = 3, 46p = 5, q = 3, 47p ≥ 6
1/e = 1/p + 1/q − 1/2
1/p + 1/q
e
v, f
  1. (3, 3). ত্রিভুজ-তল, প্রতিটি কোণে ৩টি ধার। 1/3 + 1/3 = 2/3, তাই 1/e = 2/3 − 1/2 = 1/6, e = 6. তারপর v = 2e/q = 4, f = 2e/p = 4: tetrahedron.
  2. (3, 4). 1/3 + 1/4 = 7/12, 1/e = 7/12 − 6/12 = 1/12, e = 12, v = 24/4 = 6, f = 24/3 = 8: octahedron, ৮টি ত্রিভুজ-তল।
  3. (3, 5). 1/3 + 1/5 = 8/15, 1/e = 16/30 − 15/30 = 1/30, e = 30, v = 60/5 = 12, f = 60/3 = 20: icosahedron.
  4. (3, q ≥ 6). 1/3 + 1/6 = 1/2 ঠিক, আর q বাড়লে যোগফল আরও কমে। শর্ত “1/2-এর চেয়ে বেশি” ভাঙে, তাই p = 3-এ আর কিছু নেই।
  5. p = 4. q = 3: 1/4 + 1/3 = 7/12, e = 12, v = 8, f = 6: cube. q = 4: 1/4 + 1/4 = 1/2, শর্ত ভাঙে (এটি সমতলের বর্গ-টাইলস)।
  6. p = 5. q = 3: 8/15, e = 30, v = 60/3 = 20, f = 60/5 = 12: dodecahedron. q = 4: 1/5 + 1/4 = 9/20 < 1/2, শর্ত ভাঙে।
  7. p ≥ 6. q ≥ 3 বলে 1/p + 1/q ≤ 1/6 + 1/3 = 1/2: কোনো সমাধান নেই। মোট ঠিক পাঁচটি জোড়া, প্রতিটি একটি পরিচিত ঘনবস্তু। (প্রতিটি সংখ্যা scratch-এ fractions দিয়ে মেলানো।)

নিচের ব্লক একই খোঁজ ভগ্নাংশে (fractions) চালায়, যাতে দশমিকের গোলমাল না হয়, আর তারপর একটি দ্বিতীয় প্রশ্ন করে: প্রতিটি কোণে ৩টি ধার আর তল শুধু পঞ্চভুজ আর ষড়ভুজ হলে পঞ্চভুজ কয়টি?

from fractions import Fraction as Fr
names = {(3, 3): 'tetrahedron', (3, 4): 'octahedron', (4, 3): 'cube',
         (3, 5): 'icosahedron', (5, 3): 'dodecahedron'}
for p in range(3, 9):                    # p = sides of every face
    for q in range(3, 9):                # q = edges at every vertex
        s = Fr(1, p) + Fr(1, q) - Fr(1, 2)           # Euler: s = 1/e
        if s <= 0: continue
        e = 1 / s; v, f = 2 * e / q, 2 * e / p
        print(f'(p,q)=({p},{q})  v={v} e={e} f={f}  v-e+f={v - e + f}  {names[(p, q)]}')
print('searched 3 <= p, q <= 8: only 5 pairs')
for h in (0, 20, 30):                    # 3-regular polyhedron, pentagons + hexagons
    for pent in range(60):
        e = Fr(5 * pent + 6 * h, 2); v = 2 * e / 3
        if v - e + pent + h == 2:
            print(f'hexagons={h:2} -> pentagons={pent}, v={v}, e={e}')

আসল আউটপুট (ব্রাউজারের Python):

(p,q)=(3,3)  v=4 e=6 f=4  v-e+f=2  tetrahedron
(p,q)=(3,4)  v=6 e=12 f=8  v-e+f=2  octahedron
(p,q)=(3,5)  v=12 e=30 f=20  v-e+f=2  icosahedron
(p,q)=(4,3)  v=8 e=12 f=6  v-e+f=2  cube
(p,q)=(5,3)  v=20 e=30 f=12  v-e+f=2  dodecahedron
searched 3 <= p, q <= 8: only 5 pairs
hexagons= 0 -> pentagons=12, v=20, e=30
hexagons=20 -> pentagons=12, v=60, e=90
hexagons=30 -> pentagons=12, v=80, e=120

প্রথম অংশ stepper-এর পাঁচটি সারি হুবহু দেয়; খোঁজ ৮ পর্যন্ত চালানো হলেও প্রমাণ বলে ৫-এর পরে আর দেখার দরকার নেই। দ্বিতীয় অংশ চমকপ্রদ: ষড়ভুজ ০, ২০ বা ৩০টি যা-ই হোক, পঞ্চভুজ সবসময় ঠিক ১২টি। কারণ: 3v = 2e আর 5p + 6h = 2e বসালে Euler থেকে h পুরো বাদ পড়ে যায় আর থাকে p = 12 (পূর্ণ হিসাব §৯-এর অঙ্ক ৩-এ)। h = 0 হলো dodecahedron, আর h = 20 ফুটবলের নকশা, যার ৬০টি কোণ।

৮ · Crossing number আর বাস্তব প্রয়োগ

K3,3 planar নয়, কিন্তু stepper-এ একটি crossing-এই আঁকা গেল। Non-planar graph কতটা “non-planar”, তার মাপ:

সংজ্ঞা ৮.১ আর উপপাদ্য ৮.২ (crossing number)

cr(G) হলো G-এর সব আঁকার মধ্যে crossing-এর ন্যূনতম সংখ্যা (আঁকার সাধারণ শর্তে: দুটি edge বড়জোর একবার কাটে, আর এক বিন্দুতে তিনটি edge কাটে না)। cr(G) = 0 ⇔ G planar. আর v ≥ 3-এর যেকোনো simple graph-এ cr(G) ≥ e − (3v − 6).

  1. cr(G) = k crossing-এর একটি আঁকা নিন। প্রতিটি crossing-এ জড়িত দুটি edge-এর একটি মুছে দিন। বড়জোর k-টি edge মুছেছে, আর বাকি আঁকায় কোনো crossing নেই। — প্রতি crossing-এ একটি edge
  2. বাকি graph planar, simple আর v ≥ 3, তাই তার edge ≤ 3v − 6. অর্থাৎ e − k ≤ 3v − 6, k ≥ e − 3v + 6. ∎ — উপপাদ্য ৩.১

K5-এ সীমা 10 − 9 = 1, আর এক crossing-এর আঁকা আছে (K4-এর plane drawing-এর বাইরে পঞ্চম vertex বসিয়ে), তাই cr(K5) = 1. K3,3-এ ত্রিভুজহীন রূপ ব্যবহার করুন: cr ≥ e − (2v − 4) = 9 − 8 = 1, আর stepper-এর ছবি দেখায় 1-এ হয়, তাই cr(K3,3) = 1. K6-এ সীমা 15 − 12 = 3, আর জানা আছে যে cr(K6) = 3. তবে সাধারণভাবে এই সীমা দুর্বল: বড় Kn-এ আসল crossing number n4-এর মাত্রায় বাড়ে, অথচ সীমাটি কেবল n2-এর মাত্রায়।

প্রয়োগ।

  • সার্কিট বোর্ড: এক স্তরের printed circuit board-এ তামার দুটি পথ কাটলে শর্ট সার্কিট। সংযোগের graph planar হলে এক স্তরেই নকশা সম্ভব; না হলে অন্য স্তরে যেতে “via” (স্তর পার হওয়ার ছিদ্র) লাগে, আর crossing number মোটামুটি বলে কতগুলো এমন পারাপার এড়ানো যাবে না। Chip নকশাতেও (VLSI) একই ধরনের প্রশ্ন আসে।
  • মানচিত্র আর রাস্তা: রাজনৈতিক মানচিত্রের dual সবসময় planar (সীমানা কাটাকাটি করে না)। কিন্তু রাস্তার নেটওয়ার্ক planar না-ও হতে পারে: ঢাকার একটি flyover নিচের রাস্তাকে মোড় ছাড়াই পার হয়, যা graph-এ একটি crossing, কোনো vertex নয়। তাই বাজারঘরের রাইডার-রুটের মডেলে flyover থাকলে planar graph-এর উপপাদ্য অন্ধভাবে খাটানো চলবে না।
  • ছবি আঁকা (graph drawing): মেট্রোর মানচিত্র বা নেটওয়ার্কের ডায়াগ্রাম পড়তে সহজ হয় crossing কম হলে, তাই আঁকার সফটওয়্যার crossing কমানোর চেষ্টা করে; সর্বনিম্ন খোঁজা সাধারণভাবে NP-hard বলে জানা যায়।
  • তিন ইউটিলিটি: সমতলে বা গোলকে অসম্ভব (§৩)। কিন্তু একটি মগের মতো হাতলওয়ালা তলে (torus) K3,3 এমনকি K5-ও কাটাকাটি ছাড়া আঁকা যায়: “planar” প্রশ্নটি তলের আকারের ওপর নির্ভর করে।

৯ · পরীক্ষার অঙ্ক আর একটি ভুল প্রমাণ

অঙ্ক ১: Face গোনা

একটি connected plane graph-এ ১০টি vertex, প্রতিটির degree 3. কয়টি edge আর কয়টি face? (এমন graph আছে, যেমন পঞ্চভুজাকার prism: দুটি পঞ্চভুজ আর তাদের মিলিয়ে পাঁচটি খাড়া ধার।)

  1. Handshake: 2e = 10 × 3 = 30, তাই e = 15.
  2. Euler: f = 2 − v + e = 2 − 10 + 15 = 7 (prism-এ দুটি পঞ্চভুজ আর পাঁচটি চতুর্ভুজ)।

অঙ্ক ২: সর্বোচ্চ edge

(ক) ২০টি vertex-এর simple planar graph-এ সর্বোচ্চ কয়টি edge? (খ) ত্রিভুজ না থাকলে? (গ) ২০টি vertex আর ৫৫টি edge-এর planar simple graph কি সম্ভব?

  1. (ক) 3 × 20 − 6 = 54, আর triangulation-এ ঠিক 54 পাওয়া যায় (§২-এর ব্লকের মতো ত্রিভুজের ভেতরে বিন্দু বসিয়ে)।
  2. (খ) 2 × 20 − 4 = 36.
  3. (গ) না: 55 > 54, উপপাদ্য ৩.১ ভাঙে।

অঙ্ক ৩: ফুটবলের ১২টি পঞ্চভুজ

একটি উত্তল ঘনবস্তুর প্রতিটি কোণে ঠিক ৩টি ধার, আর তল শুধু পঞ্চভুজ (p-টি) আর ষড়ভুজ (h-টি)। প্রমাণ করুন p = 12.

  1. Vertex-এর handshake: 3v = 2e. Face-এর handshake: 5p + 6h = 2e. — দুই দিকের double counting
  2. Euler: v − e + (p + h) = 2. 6 দিয়ে গুণ করে 6v = 4e বসালে 4e − 6e + 6p + 6h = 12, অর্থাৎ 6p + 6h − 2e = 12.
  3. 2e = 5p + 6h বসালে 6p + 6h − 5p − 6h = 12, অর্থাৎ p = 12, h যা-ই হোক। ∎

প্রমাণের ভুল ধরুন: “প্রতিটি planar graph-এ degree ≤ 4-এর vertex আছে”

একজন লিখলেন: “v-এর ওপর induction. v ≤ 5-এ প্রতিটি degree ≤ 4, সত্য। ধরুন v-vertex-এর প্রতিটি simple planar graph-এ degree ≤ 4-এর একটি vertex আছে। এমন একটি graph H নিন, আর তার বাইরের face-এ একটি নতুন vertex x বসিয়ে কয়েকটি vertex-এর সঙ্গে জুড়ুন, যাতে graph planar থাকে। H-এর degree ≤ 4-এর vertex-টি হয় তখনো তাই থাকে, নয়তো x নিজেই কম degree-র, কারণ বাইরের face-এর সীমানায় বেশি vertex নেই। সুতরাং (v + 1)-vertex graph-এ দাবি সত্য। ∎”

ভুল কোথায়: প্রথমত দাবিটিই মিথ্যা: icosahedron-এর graph planar, ১২টি vertex, আর প্রতিটির degree 5 (scratch-এ NetworkX দিয়ে planarity আর degree মেলানো)। এবার দেখুন প্রমাণ ঠিক কোথায় ভাঙে। Icosahedron থেকে একটি vertex x সরালে ১১-vertex-এর একটি planar graph H থাকে, যাতে x-এর পাঁচ প্রতিবেশীর degree 4: H দাবি মানে। x ফেরত দিলে x ঠিক ওই পাঁচজনের সঙ্গে যুক্ত হয়, তাদের প্রত্যেকের degree 5 হয়ে যায়, আর x-এর নিজের degree-ও 5. অর্থাৎ “H-এর কম degree-র vertex তখনো তাই থাকে, নয়তো x নিজেই কম degree-র” ধাপটি প্রমাণহীন দাবি, আর এখানেই মিথ্যা। গভীরতর সমস্যা induction-এর ধরন: একটি ছোট graph-এ vertex যোগ করে নির্দিষ্ট ধরনের বড় graph বানালে সব বড় graph-এর কথা বলা হয় না। সঠিক পদ্ধতি সবসময়: যেকোনো (v + 1)-vertex graph থেকে শুরু করে একটি vertex সরিয়ে নামা, আর তারপর ফেরত দেওয়ার ধাপটি সত্যিই প্রমাণ করা, ঠিক যেমন §৪-এর ছয় রঙের প্রমাণে।

আরও গভীরে: Euler-এর সূত্র একটি বড় ধারণার প্রথম ধাপ: g-টি হাতলওয়ালা তলে (genus g) আঁকা graph-এ v − e + f = 2 − 2g, ডান পাশের সংখ্যাটিকে বলে Euler characteristic (torus-এ 0). Wagner-এর উপপাদ্যের বিশাল সাধারণীকরণ Robertson আর Seymour-এর graph minor theorem (দুই দশকের বেশি সময় ধরে প্রকাশিত প্রবন্ধ-ধারায় প্রমাণিত বলে উল্লেখ করা হয়): minor নিলে যে graph-পরিবার বন্ধ থাকে, তার “নিষিদ্ধ minor”-এর তালিকা সবসময় সসীম। আর crossing lemma বলে, e ≥ 4v হলে cr(G) ≥ e3/(64v2), যা §৮-এর সীমার চেয়ে অনেক শক্তিশালী এবং combinatorial geometry-তে বহু প্রয়োগ পেয়েছে।

পরীক্ষা ও ইন্টারভিউতে: বিশ্ববিদ্যালয়, চাকরি বা ইন্টারভিউর পরীক্ষায় এই ধরনের প্রশ্ন প্রায়ই আসে:

  • Connected planar graph-এ v = 8, e = 12 হলে face কয়টি? f = 2 − 8 + 12 = 6.
  • K5 planar নয়, প্রমাণ করুন। e = 10 > 3v − 6 = 9.
  • K3,3-এর জন্য 3v − 6 কেন যথেষ্ট নয়? 9 ≤ 12 মানে; ত্রিভুজ নেই বলে e ≤ 2v − 4 = 8 লাগে, আর 9 > 8.
  • Planar graph-এর minimum degree সর্বোচ্চ কত হতে পারে? 5 (icosahedron-এ সমতা)।
  • Platonic solid কয়টি, কেন? পাঁচটি: Euler থেকে 1/p + 1/q > 1/2, যার সমাধান পাঁচটি।

১০ · AI-এর যুগে — planarity-র প্রমাণ আর হিসাব যাচাই

Planar graph-এর প্রশ্নে AI সহকারী সূত্রগুলো প্রায় সবসময় সঠিক লেখে, কিন্তু শর্ত বাদ দেয় আর আবশ্যিক শর্তকে যথেষ্ট বলে চালিয়ে দেয়। কয়েকটি নিয়মিত ভুল আর ধরার উপায়:

AI-এর ভুলকীভাবে ধরবেন
“e ≤ 3v − 6, তাই graph planar” (উল্টো দিক)K3,3: 9 ≤ 12, তবু planar নয়
Disconnected graph-এও v − e + f = 2 বসানোদুটি আলাদা ত্রিভুজ: 6 − 6 + 3 = 3 = 1 + c
“simple” বা “v ≥ 3” শর্ত বাদ দিয়ে সীমা খাটানোMultigraph-এ দুই vertex-এ যত খুশি parallel edge, তবু planar
Euler-এর induction-এ যেকোনো edge মোছাদেখুন মোছা edge-টি কোনো cycle-এ আছে কি না
Subdivision আর minor গুলিয়ে “Petersen-এ K5-এর subdivision আছে” বলাPetersen-এর সব degree 3; K5-subdivision-এ degree-4 vertex লাগে

AI-এর কাছে planarity-র প্রমাণ বা হিসাব চাইলে এমন কাঠামো দিন, যাতে প্রতিটি ধাপ আলাদা করে যাচাই করা যায়:

নিচের graph-টি planar কি না, প্রমাণসহ বলো: graph: [edge-তালিকা, যেমন K3,3 আর একটি অতিরিক্ত vertex] ১. শুরুতেই বলো graph-টি simple কি না, connected কি না, আর v, e কত। ২. "planar নয়" দাবি করলে একটি পূর্ণ প্রমাণ দাও: হয় একটি সীমা (e ≤ 3v − 6, e ≤ 2v − 4 বা girth-এর সীমা) কীভাবে ভাঙে, নয়তো K5 বা K3,3-এর একটি subdivision-এর vertex আর path স্পষ্ট লিখে। ৩. "planar" দাবি করলে প্রতিটি vertex-এর স্থানাঙ্কসহ একটি plane drawing দাও, যাতে আমি এঁকে মিলিয়ে নিতে পারি; শুধু সীমা মানাকে প্রমাণ হিসেবে দেবে না। ৪. Euler-এর সূত্র ব্যবহার করলে connected শর্ত আর f-এর মান দেখাও। ৫. একটি Python কোড দাও (NetworkX-এর check_planarity দিয়ে) যা আমি নিজে চালাতে পারি। ৬. কোনো উপপাদ্যের নাম, সাল বা উৎস নিয়ে নিশ্চিত না হলে তা স্পষ্ট বলো।

AI-এর উত্তর হাতে পেলে — যাচাইয়ের চেকলিস্ট

Planarity-র দাবি যাচাইয়ের সুবিধা: “না”-উত্তরের একটি প্রমাণপত্র (Kuratowski subgraph) আর “হ্যাঁ”-উত্তরের একটি প্রমাণপত্র (একটি plane drawing) দুটোই হাতে মিলিয়ে দেখা যায়। AI যে উত্তরই দিক, তার প্রমাণপত্র চেয়ে নিন।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন, তারপর “→ উত্তর” চাপুন।

প্র ০১Euler-এর সূত্র কে প্রথম পেয়েছিলেন, আর তার “প্রমাণ” নিয়ে প্রায় দুই শতক কেন বিতর্ক চলল?

Leonhard Euler ১৭৫০ সালের দিকে Christian Goldbach-কে লেখা চিঠিতে ঘনবস্তুর কোণ, ধার আর তলের সম্পর্কটি জানান, আর ১৭৫০-এর দশকে এ নিয়ে প্রবন্ধ প্রকাশ করেন বলে সাধারণত উল্লেখ করা হয়। তার আগে ১৬৩০-এর দিকে René Descartes-এর একটি অপ্রকাশিত পাণ্ডুলিপিতে কোণের হিসাব নিয়ে একটি ফল ছিল, যা থেকে সূত্রটি বের করা যায়; পাণ্ডুলিপিটি হারিয়ে গিয়েছিল, Leibniz-এর করা একটি নকল পরে উনিশ শতকে পাওয়া যায় বলে ইতিহাসবিদেরা লেখেন। কাকে কতটা কৃতিত্ব দেওয়া উচিত, সেটি নিয়ে মত ভিন্ন।

Euler-এর নিজের যুক্তি পুরো সঠিক ছিল না বলে পরে সমালোচনা হয়; তিনি ঘনবস্তু থেকে কোণ একে একে কেটে ছোট করার একটি পদ্ধতি দেন, যা সব ক্ষেত্রে কাজ করে কি না, তা স্পষ্ট ছিল না। উনিশ শতকের শুরুতে Legendre আর Cauchy আলাদা প্রমাণ দেন; Cauchy-র প্রমাণ (১৮১৩ সালের বলে উল্লেখ করা হয়) আমাদের §২-এর মতোই: ঘনবস্তুকে সমতলে ছড়িয়ে একটি plane graph বানানো, তারপর edge মুছে মুছে নামা।

সমস্যা হলো “ঘনবস্তু” বলতে কী বোঝায়। একটি ছবির ফ্রেমের মতো ঘনবস্তু (মাঝখানে ফাঁকা, চারপাশে কাঠ) ভাবুন: তার কোণ, ধার আর তল গুনলে v − e + f = 0 আসে, ২ নয়। উনিশ শতকে এমন অনেক “ব্যতিক্রম” পাওয়া যায়, আর প্রতিবার গণিতবিদেরা হয় সংজ্ঞা বদলান, নয়তো শর্ত যোগ করেন। দার্শনিক Imre Lakatos ১৯৭৬ সালে প্রকাশিত “Proofs and Refutations” বইয়ে এই ইতিহাসকে একটি শ্রেণিকক্ষের কাল্পনিক কথোপকথনে সাজিয়ে দেখান, কীভাবে পাল্টা-উদাহরণ আর প্রমাণ একসঙ্গে একটি ধারণাকে ধারালো করে।

আধুনিক উত্তর পরিষ্কার: সূত্রটি connected plane graph-এর জন্য, আর উত্তল ঘনবস্তু তার একটি বিশেষ ক্ষেত্র। ছবির ফ্রেম একটি torus-এর মতো তল, যার Euler characteristic 0. অর্থাৎ “ব্যতিক্রম” আসলে আরেকটি উপপাদ্যের প্রথম উদাহরণ, যেখান থেকে topology-র একটি বড় শাখা জন্মেছে। শর্ত স্পষ্ট লেখার এই শিক্ষা আজও প্রাসঙ্গিক: AI বা মানুষ, যে কেউ শর্ত বাদ দিলে সূত্র “ভুল” প্রমাণ হতে পারে।

মূল উপলব্ধি: Euler (১৭৫০-এর দশক) আর Cauchy (১৮১৩)-র পর থেকে সূত্রটির ইতিহাস দেখায়, উপপাদ্য তার শর্তের মতোই শক্ত; v − e + f = 2 connected plane graph-এর কথা, আর ব্যতিক্রমগুলো অন্য তলের Euler characteristic.

প্র ০২Kuratowski-এর উপপাদ্য কে কে পেয়েছিলেন, আর তা থেকে graph minor theory কীভাবে এল?

পোল্যান্ডের গণিতবিদ Kazimierz Kuratowski ১৯৩০ সালে উপপাদ্যটি প্রকাশ করেন। প্রায় একই সময়ে যুক্তরাষ্ট্রে Orrin Frink আর Paul A. Smith স্বাধীনভাবে একই ফল পেয়েছিলেন বলে জানা যায়, কিন্তু Kuratowski-র প্রবন্ধ আগে বেরিয়েছে জেনে তাঁরা পূর্ণ প্রবন্ধ প্রকাশ করেননি। রুশ ভাষার বইয়ে কখনো উপপাদ্যটিকে Pontryagin–Kuratowski নামে ডাকা হয়, কারণ Lev Pontryagin-ও অপ্রকাশিতভাবে একটি প্রমাণ পেয়েছিলেন বলে দাবি আছে; এই দাবির বিস্তারিত নিয়ে ইতিহাসবিদদের মধ্যে নিশ্চয়তা কম।

১৯৩৭ সালে জার্মান গণিতবিদ Klaus Wagner minor-এর ভাষায় সমতুল্য রূপটি দেন। Minor-এর রূপটি দেখতে প্রায় একই, কিন্তু তার একটি গুরুত্বপূর্ণ সুবিধা আছে: planar graph-এর minor-ও planar (edge সংকুচিত করলে ছবিতে কাটাকাটি তৈরি হয় না)। অর্থাৎ planar graph-এর পরিবার “minor নিলে বন্ধ”, আর Wagner বলেন, এই পরিবার থেকে বেরিয়ে যাওয়ার ঠিক দুটি ক্ষুদ্রতম দরজা আছে: K5 আর K3,3.

স্বাভাবিক প্রশ্ন: অন্য তলের (যেমন torus) জন্যও কি এমন সসীম নিষিদ্ধ তালিকা আছে? আরও সাধারণভাবে, minor নিলে বন্ধ এমন যেকোনো পরিবারের? Wagner নিজেও এমন অনুমান নিয়ে ভেবেছিলেন বলে জানা যায়। Neil Robertson আর Paul Seymour ১৯৮৩ থেকে ২০০০-এর দশক পর্যন্ত বিশটির বেশি প্রবন্ধের একটি ধারায় প্রমাণ করেন যে উত্তর হ্যাঁ: প্রতিটি minor-closed graph-পরিবারের নিষিদ্ধ minor-এর তালিকা সসীম। এটি graph theory-র সবচেয়ে বড় প্রমাণগুলোর একটি বলে গণ্য হয়।

মজার দিক হলো, উপপাদ্যটি বলে তালিকা সসীম, কিন্তু তালিকাটি কী, তা বলে না। Torus-এর জন্য নিষিদ্ধ minor-এর সংখ্যা হাজারের বেশি বলে কম্পিউটার-খোঁজে পাওয়া গেছে, আর পূর্ণ তালিকা এখনো জানা নেই বলে উল্লেখ পাওয়া যায়। অর্থাৎ সমতলের দুটি-মাত্র দোষীর তালিকা একটি ব্যতিক্রমী সৌভাগ্য। Algorithm-এর দিকেও এর প্রভাব বিশাল: নির্দিষ্ট একটি minor আছে কি না, তা polynomial সময়ে পরীক্ষা করা যায়, যদিও সেই algorithm-এর ধ্রুবক বাস্তবে ব্যবহারের অযোগ্য রকম বড়।

মূল উপলব্ধি: Kuratowski (১৯৩০) আর Wagner (১৯৩৭) planar graph-কে মাত্র দুটি নিষিদ্ধ কাঠামো দিয়ে চেনান; Robertson–Seymour দেখান যে প্রতিটি minor-closed পরিবারের এমন সসীম তালিকা আছে, যদিও বেশিরভাগ ক্ষেত্রে তালিকাটি অজানা।

প্র ০৩সার্কিট বোর্ড আর chip-এর নকশায় planarity কেন জরুরি, আর planarity পরীক্ষার algorithm কীভাবে উন্নত হলো?

একটি printed circuit board-এর এক স্তরে তামার পথগুলো একে অন্যকে কাটতে পারে না। ধরুন বাজারঘরের লেবেল-প্রিন্টারের একটি ছোট বোর্ডে কয়েকটি chip-এর পিন একে অন্যের সঙ্গে যুক্ত করতে হবে। পিনকে vertex আর সংযোগকে edge ধরলে প্রশ্নটি দাঁড়ায়: এই graph কি planar? হলে এক স্তরেই কাজ শেষ; না হলে কিছু পথ অন্য স্তরে নিতে হয়, আর স্তর বদলানোর প্রতিটি ছিদ্র (via) খরচ আর ব্যর্থতার ঝুঁকি বাড়ায়। একটি graph-কে সর্বনিম্ন কয়টি planar স্তরে ভাগ করা যায়, তার নাম thickness, আর এটিও একটি সুপরিচিত গবেষণা-প্রশ্ন।

তাই দ্রুত planarity পরীক্ষা ১৯৬০-এর দশক থেকেই একটি ব্যবহারিক প্রয়োজন ছিল। Kuratowski-র উপপাদ্য সরাসরি algorithm দেয় না: সব subgraph-এ subdivision খোঁজা সূচকীয় কাজ। ১৯৬০-এর দশকে Lempel, Even আর Cederbaum একটি polynomial পদ্ধতি দেন বলে জানা যায়। ১৯৭৪ সালে John Hopcroft আর Robert Tarjan DFS ব্যবহার করে রৈখিক সময়ের প্রথম algorithm প্রকাশ করেন, যা ১৯৮৬ সালে তাঁদের Turing Award-এর উল্লেখিত কাজের অংশ বলে জানা যায়। পরে Booth আর Lueker PQ-tree নামের একটি data structure দিয়ে Lempel–Even–Cederbaum পদ্ধতিকে রৈখিক করেন, আর ২০০৪ সালে Boyer আর Myrvold একটি সহজতর “edge addition” পদ্ধতি দেন বলে উল্লেখ পাওয়া যায়।

আধুনিক algorithm-গুলো শুধু হ্যাঁ বা না বলে না। হ্যাঁ হলে একটি embedding (প্রতিটি vertex-এর চারপাশে প্রতিবেশীদের ক্রম, অর্থাৎ §২-এর rotation system) দেয়, আর না হলে একটি Kuratowski subgraph, যেমন §৫-এ NetworkX দিয়েছিল। দুটিই সহজে যাচাইযোগ্য প্রমাণপত্র: embedding থেকে face গুনে Euler মেলানো যায়, আর Kuratowski subgraph-এ degree গুনে মসৃণ করে K5 বা K3,3 পাওয়া যায়। ভালো algorithm-এর একটি লক্ষণ এটিই: উত্তরের সঙ্গে প্রমাণপত্র।

বাস্তবের chip বা বোর্ড অবশ্য বহুস্তরের, আর তার উপাদানের আকার, তারের দৈর্ঘ্য, তাপ আর সংকেতের সময়ও বিবেচনায় আসে। তাই planarity একটি ভিত্তি-ধারণা, পুরো নকশা-প্রক্রিয়া নয়; বাণিজ্যিক নকশা-সফটওয়্যার বহু heuristic ব্যবহার করে।

মূল উপলব্ধি: Planarity পরীক্ষা Hopcroft–Tarjan (১৯৭৪) থেকে রৈখিক সময়ে সম্ভব, আর আধুনিক algorithm উত্তরের সঙ্গে embedding বা Kuratowski subgraph-এর মতো যাচাইযোগ্য প্রমাণপত্র দেয়; সার্কিট বোর্ডে এর অর্থ কম স্তর আর কম via.

প্র ০৪Crossing number-এর প্রশ্ন একটি ইটভাটা থেকে কীভাবে এল, আর এর কতটা আজও অজানা?

হাঙ্গেরির গণিতবিদ Pál Turán দ্বিতীয় বিশ্বযুদ্ধের সময় একটি বাধ্যতামূলক শ্রম-শিবিরে একটি ইটভাটায় কাজ করতেন বলে পরে নিজেই লিখেছেন (তাঁর স্মৃতিচারণা ১৯৭৭ সালে প্রকাশিত বলে উল্লেখ করা হয়)। কয়েকটি চুল্লি থেকে কয়েকটি গুদামে ইটের গাড়ি রেললাইনে চলত, আর দুটি লাইন যেখানে কাটত, সেখানে গাড়ি লাইনচ্যুত হয়ে ইট পড়ে যেত। তাঁর প্রশ্ন: m-টি চুল্লি আর n-টি গুদামের প্রতিটি জোড়ায় লাইন থাকলে সর্বনিম্ন কয়টি কাটাকাটি অনিবার্য? Graph-এর ভাষায়: cr(Km,n) কত?

১৯৫৪ সালে Kazimierz Zarankiewicz একটি আঁকা দেন, যার crossing-সংখ্যা ⌊m/2⌋⌊(m − 1)/2⌋⌊n/2⌋⌊(n − 1)/2⌋, আর দাবি করেন এটিই সর্বনিম্ন। পরে তাঁর প্রমাণে একটি ফাঁক পাওয়া যায় (১৯৬০-এর দশকে Ringel আর Kainen-এর নাম এর সঙ্গে উল্লেখ করা হয়), আর দাবিটি আজও “Zarankiewicz অনুমান” নামে খোলা। ছোট ক্ষেত্রে এটি প্রমাণিত: যেমন min(m, n) ≤ 6 হলে সত্য বলে Kleitman ১৯৭০ সালে দেখান বলে জানা যায়। K3,3-এ সূত্রটি 1 · 1 · 1 · 1 = 1 দেয়, আমাদের stepper-এর সঙ্গে মিলে। K4,4-এ 2 · 1 · 2 · 1 = 4, আর §৮-এর ত্রিভুজহীন সীমা 16 − (2 · 8 − 4) = 4 দেয়, তাই সেখানে সীমাটি নিখুঁত।

Kn-এর জন্যও একই অবস্থা: Richard Guy-এর নামে পরিচিত একটি অনুমিত সূত্র আছে, যা ছোট n-এ যাচাই করা হয়েছে কিন্তু সাধারণভাবে অপ্রমাণিত। অর্থাৎ যে প্রশ্ন একটি শিশুও বুঝবে (“সবচেয়ে কম কয়টি কাটাকাটি?”), তার উত্তর পূর্ণ graph-এর মতো সরল পরিবারেও অজানা।

সবচেয়ে কাজের সাধারণ ফল হলো crossing lemma: e ≥ 4v হলে cr(G) ≥ e3/(64v2) (ধ্রুবক উৎসভেদে একটু আলাদা), যা ১৯৮২ সালে Ajtai, Chvátal, Newborn আর Szemerédi এবং আলাদাভাবে ১৯৮৩ সালে Leighton প্রমাণ করেন বলে জানা যায়। এর প্রমাণ §৮-এর দুর্বল সীমাকে একটি এলোমেলো নমুনায় খাটিয়ে শক্তিশালী করে, পর্ব ৪৩-এর probabilistic method-এর একটি সুন্দর উদাহরণ। Leighton-এর আগ্রহ ছিল VLSI chip-এর নকশায়, যেখানে crossing মানে জায়গা আর খরচ।

মূল উপলব্ধি: Turán-এর ইটভাটার প্রশ্ন থেকে crossing number এসেছে; cr(Km,n) আর cr(Kn)-এর সূত্র আজও অনুমান, কিন্তু crossing lemma e3/(64v2)-এর নিম্নসীমা দেয়, যা e − (3v − 6)-এর চেয়ে বহুগুণ শক্তিশালী।

প্র ০৫Plato-র পাঁচটি ঘনবস্তু থেকে ফুটবল, C60 অণু আর ভাইরাসের খোলস পর্যন্ত Euler-এর সূত্র কীভাবে কাজ করে?

পাঁচটি সুষম ঘনবস্তুর নাম Plato-র সঙ্গে জড়িয়েছে, কারণ তাঁর “Timaeus” সংলাপে এগুলোকে মৌলিক উপাদানের (আগুন, মাটি, বাতাস, পানি আর মহাবিশ্ব) সঙ্গে মেলানো হয়েছিল। Euclid-এর “Elements”-এর শেষ খণ্ড (Book XIII) এই পাঁচটির নির্মাণ দেখায় আর যুক্তি দেয় যে আর কোনোটি নেই, এক কোণে মিলিত তলগুলোর কোণের যোগফল ৩৬০°-এর কম হতে হবে, এই যুক্তিতে। আমাদের §৭-এর প্রমাণ এর একটি সম্পূর্ণ ভিন্ন, সংখ্যার পথ: শুধু Euler আর দুটি handshake. Johannes Kepler ১৫৯৬ সালে “Mysterium Cosmographicum” বইয়ে গ্রহের কক্ষপথ এই পাঁচটি ঘনবস্তু দিয়ে ব্যাখ্যা করার চেষ্টা করেন, যা পরে ভুল প্রমাণিত হয়।

§৯-এর অঙ্ক ৩ দেখিয়েছে, প্রতিটি কোণে তিনটি ধার আর তল শুধু পঞ্চভুজ ও ষড়ভুজ হলে পঞ্চভুজ ঠিক ১২টি। ফুটবলের প্রচলিত নকশায় ১২টি পঞ্চভুজ আর ২০টি ষড়ভুজ, যা গণিতে truncated icosahedron: icosahedron-এর প্রতিটি কোণ কেটে ফেললে পাওয়া যায়। কোণ ৬০টি, ধার ৯০টি, তল ৩২টি: 60 − 90 + 32 = 2.

১৯৮৫ সালে Harold Kroto, Robert Curl আর Richard Smalley কার্বনের একটি অণু শনাক্ত করেন, যার ৬০টি পরমাণু ঠিক এই আকারে বসানো; স্থপতি Buckminster Fuller-এর জ্যামিতিক গম্বুজের নামে এর নাম রাখা হয় buckminsterfullerene, আর এই কাজের জন্য তাঁরা ১৯৯৬ সালে রসায়নে Nobel পান বলে জানা যায়। Euler-এর হিসাব এখানে রসায়নবিদকে একটি শর্ত দেয়: কার্বনের প্রতিটি পরমাণু তিনটি প্রতিবেশীর সঙ্গে যুক্ত হলে আর বলয়গুলো শুধু পাঁচ ও ছয় পরমাণুর হলে, বন্ধ খোলসে পাঁচের বলয় ঠিক ১২টি, অণু যত বড়ই হোক।

জীববিজ্ঞানেও একই ছাঁচ দেখা যায়: অনেক ভাইরাসের প্রোটিন-খোলস icosahedron-এর প্রতিসাম্যের, আর সেগুলোর গঠন বোঝাতে Caspar আর Klug ১৯৬২ সালে যে তত্ত্ব দেন বলে উল্লেখ করা হয়, তাতেও ১২টি “পাঁচ-প্রতিসাম্যের” বিন্দু অনিবার্য। গণিতের দিক থেকে কারণ একটাই: বন্ধ তলের Euler characteristic 2. প্রতিসাম্য গোনার অন্য দিকটি, অর্থাৎ ঘনবস্তুর কয়টি ঘূর্ণন আছে, পর্ব ৫১-এ দেখেছেন।

মূল উপলব্ধি: Euclid থেকে C60 পর্যন্ত একই হিসাব: v − e + f = 2 আর দুটি handshake থেকে Platonic solid ঠিক পাঁচটি, আর পঞ্চভুজ-ষড়ভুজের যেকোনো বন্ধ খোলসে পঞ্চভুজ ঠিক ১২টি।

অনুশীলন

আগে খাতায় করুন, তারপর উত্তর খুলে মেলান।

  1. প্রমাণ: G একটি simple graph, v ≥ 11. প্রমাণ করুন G আর তার complement Ḡ (যেখানে ঠিক সেই জোড়াগুলোয় edge, যেগুলোয় G-তে নেই) দুটিই planar হতে পারে না।
    1. প্রতিটি জোড়া vertex ঠিক একটিতে যুক্ত, তাই e(G) + e(Ḡ) = C(v, 2) = v(v − 1)/2. — complement-এর সংজ্ঞা
    2. দুটিই planar হলে উপপাদ্য ৩.১ অনুযায়ী প্রত্যেকে ≤ 3v − 6, তাই v(v − 1)/2 ≤ 6v − 12. — edge-সীমা, v ≥ 3
    3. সাজালে v2 − 13v + 24 ≤ 0. এর মূল (13 ± √73)/2, প্রায় 2.23 আর 10.77, তাই v ≤ 10. — দ্বিঘাত অসমতা
    4. v ≥ 11-এ এটি অসম্ভব (যেমন v = 11: 55 > 54). তাই অন্তত একটি planar নয়। ∎

    আসল সীমা আরও ছোট: v ≥ 9 হলেই অন্তত একটি non-planar, যা ১৯৬০-এর দশকে (Battle, Harary আর Kodama-র নামে উল্লেখ করা হয়) আলাদা যুক্তিতে প্রমাণিত বলে জানা যায়। শুধু edge গুনে v = 9, 10 ধরা যায় না (36 ≤ 42, 45 ≤ 48, scratch-এ মেলানো)।

  2. হিসাব: (ক) একটি connected plane graph-এ ১২টি vertex আর প্রতিটি face একটি ত্রিভুজ; edge আর face কয়টি? (খ) একটি connected planar simple graph-এ ১৫টি vertex, আর কোনো ত্রিভুজ নেই; সর্বোচ্চ কয়টি edge? (গ) একটি উত্তল ঘনবস্তুর ৮টি তল আর ১২টি কোণ; ধার কয়টি?

    (ক) সব face ত্রিভুজ মানে e = 3v − 6 = 30, আর f = 2 − 12 + 30 = 20 (যেমন icosahedron; পরীক্ষা: 2e = 60 = 3f).

    (খ) e ≤ 2v − 4 = 26.

    (গ) Euler: e = v + f − 2 = 12 + 8 − 2 = 18 (যেমন ষড়ভুজাকার prism: দুটি ষড়ভুজ আর ছয়টি চতুর্ভুজ, ১২টি কোণ, ১৮টি ধার)।

  3. আউটপুট অনুমান: কোড না চালিয়ে বলুন কী ছাপা হবে, আর প্রতিটি সারির অর্থ কী। তারপর যেকোনো Python-এ চালিয়ে মেলান।
    for n in range(3, 8):
        v, e = n, n * (n - 1) // 2
        print(n, e, 3 * v - 6, e <= 3 * v - 6)
    3 3 3 True
    4 6 6 True
    5 10 9 False
    6 15 12 False
    7 21 15 False

    প্রতিটি সারি Kn-এর জন্য: n, edge-সংখ্যা C(n, 2), আর সীমা 3n − 6. K3 আর K4-এ সমতা (দুটিই planar triangulation). n ≥ 5-এ e বর্গের হারে বাড়ে আর সীমা রৈখিক হারে, তাই False: K5, K6, K7 planar নয়, আর এই False প্রতিটি একটি পূর্ণ প্রমাণ। লক্ষ করুন True কিছু প্রমাণ করে না, শুধু এখানে কাকতালীয়ভাবে K3, K4 সত্যিই planar (CPython 3.14-এ চালিয়ে মেলানো)।

  4. প্রমাণের ভুল ধরুন: “দাবি: Petersen graph planar. প্রমাণ: এটি simple, v = 10, e = 15. e ≤ 3v − 6 = 24 মানে। ত্রিভুজও নেই, আর e ≤ 2v − 4 = 16-ও মানে। দুটি planarity-পরীক্ষাই পাস, তাই graph-টি planar. ∎” ভুল কোথায়, আর সঠিক সিদ্ধান্ত কী?
    • ভুল ধাপ: e ≤ 3v − 6 আর e ≤ 2v − 4 “planarity-পরীক্ষা” নয়, শুধু আবশ্যিক শর্ত। এগুলো মানা থেকে planar হওয়া আসে না; এটি converse প্রমাণের ভুল। K3,3 + একটি ঝুলন্ত vertex তিনটি সীমাই মানে, তবু planar নয়।
    • সঠিক সিদ্ধান্ত: Petersen graph planar নয়. এর girth 5, তাই উপপাদ্য ৩.২-এর সাধারণ সীমা e ≤ 5(10 − 2)/3 ≈ 13.33 লাগে, আর 15 > 13.33. অন্য প্রমাণ: এতে K3,3-এর একটি subdivision আছে (§৫-এর NetworkX run).
    • শিক্ষা: “planar” প্রমাণ করতে একটি plane drawing দেখাতে হয়; “planar নয়” প্রমাণ করতে একটি ভাঙা সীমা বা একটি Kuratowski subgraph.

নিজেকে যাচাই করুন

ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।

ক্রম“v ≥ 3-এর connected simple planar graph-এ e ≤ 3v − 6” প্রমাণের ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)

  1. Graph-টির একটি plane drawing নিন
  2. Simple আর v ≥ 3 বলে প্রতিটি face-এর degree অন্তত ৩
  3. Face-এর handshake: 2e = সব face-এর degree-র যোগফল ≥ 3f
  4. Euler-এর সূত্রে f ≤ 2e/3 বসান: 2 ≤ v − e/3
  5. সাজিয়ে সিদ্ধান্ত: e ≤ 3v − 6

একটি connected plane graph-এ ৮টি vertex আর ১২টি edge. এর face কয়টি (বাইরের face-সহ)?

  • 4
  • 5
  • 6
  • 20

১০টি vertex-এর একটি simple planar graph-এ সর্বোচ্চ কয়টি edge থাকতে পারে?

  • 20
  • 24
  • 27
  • 45

নিচের কোন graph planar নয়?

  • K4
  • Q3 (ঘনক)
  • K2,5
  • K3,3

Kuratowski-এর উপপাদ্য অনুযায়ী একটি সসীম graph planar যদি এবং কেবল যদি:

  • তার কোনো subgraph K5 বা K3,3-এর subdivision নয়
  • e ≤ 3v − 6
  • তাতে K5 বা K3,3 হুবহু subgraph হিসেবে নেই
  • প্রতিটি vertex-এর degree ≤ 5

একটি সুষম উত্তল ঘনবস্তুর প্রতিটি তল p-ভুজ আর প্রতিটি কোণে q-টি ধার। নিচের কোন (p, q) জোড়া অসম্ভব?

  • (3, 5)
  • (5, 3)
  • (4, 4)
  • (3, 4)

v ≥ 3-এর simple graph-এ cr(G) ≥ e − (3v − 6). এই সীমা অনুযায়ী K6-এর crossing number অন্তত কত?

  • 0
  • 1
  • 3
  • 15

শব্দকোষ

লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন, অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:

মনে রাখুন

  1. Planar আর plane: planar মানে কাটাকাটি ছাড়া আঁকা সম্ভব; একটি ছবিতে crossing থাকলে কিছু প্রমাণ হয় না। Face-এর degree-র যোগফল = 2e.
  2. Euler: connected plane graph-এ v − e + f = 2 (c component-এ 1 + c); প্রমাণে cycle-এর একটি edge মুছে e আর f একসঙ্গে কমানো হয়।
  3. সীমা: simple, v ≥ 3: e ≤ 3v − 6; ত্রিভুজহীন: e ≤ 2v − 4; girth g: e ≤ g(v − 2)/(g − 2). ভাঙলে planar নয়, মানলে কিছু প্রমাণ হয় না।
  4. Kuratowski আর Wagner: planar ⇔ K5 বা K3,3-এর subdivision (বা minor) নেই; প্রতিটি planar graph-এ degree ≤ 5-এর vertex আছে।
  5. প্রয়োগ: dual-এ v* = f, e* = e; Platonic solid ঠিক পাঁচটি (1/p + 1/q > 1/2); cr(G) ≥ e − (3v − 6); তিন ইউটিলিটির ধাঁধা সমতলে অসম্ভব।

পরের পর্বে: পর্ব ৬৩ “Graph coloring — chromatic number, scheduling আর চার রঙের উপপাদ্য”: পরীক্ষার সময়সূচি থেকে মানচিত্র পর্যন্ত, পাশাপাশি দুটি জিনিসকে আলাদা রং দিতে সবচেয়ে কম কয়টি রং লাগে, আর এই পর্বের degree ≤ 5 উপপাদ্য দিয়ে পাঁচ রঙের প্রমাণ কীভাবে দাঁড়ায়, সেই আলোচনা।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

এই পর্বটি শেয়ার করুন:
এই পর্বে ভুল পেয়েছেন? জানান