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

Ramsey theory আর extremal combinatorics-এর পরিচয়

Introduction to Ramsey Theory and Extremal Combinatorics — Ramsey Numbers, Schur, van der Waerden, Mantel, Turán and Sperner

Taught in Bangla, this lesson defines Ramsey numbers, proves R(3, 3) = 6 and the bounds R(s, t) ≤ R(s − 1, t) + R(s, t − 1) and C(s + t − 2, s − 1), and gives lower bounds from constructions and random colourings. It covers Schur's theorem, van der Waerden numbers with W(2, 3) = 9 and Erdős–Szekeres, then extremal graph theory: Mantel's ⌊n²/4⌋ bound, Turán's theorem and Sperner's theorem through the LYM inequality. In-page Python searches colourings, Schur and van der Waerden cases, and checks Turán and LYM.

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

  • Ramsey number-এর সংজ্ঞা, গ্রাফের ভাষায় তার অর্থ, আর R(3, 3) = 6-এর দুই দিক
  • R(s, t)-এর recursive সীমা আর binomial সীমার সম্পূর্ণ প্রমাণ, parity দিয়ে R(3, 4) = 9
  • নিচের সীমার জন্য circulant আর Paley রং, আর জানা ছোট Ramsey সংখ্যার তালিকা
  • Schur আর van der Waerden-এর উপপাদ্য, Erdős–Szekeres-কে Ramsey-র চোখে দেখা
  • Mantel-এর উপপাদ্যের দুটি প্রমাণ, Turán-এর উপপাদ্য, আর LYM অসমতা দিয়ে Sperner-এর উপপাদ্য

১ · বিশৃঙ্খলায় শৃঙ্খলা — Ramsey-র প্রশ্ন

রাতের আকাশে তারা এলোমেলো ছড়ানো, তবু মানুষ সবসময় সেখানে সপ্তর্ষিমণ্ডলের মতো নকশা খুঁজে পায়। প্রশ্ন হলো: এটি কি শুধু মনের খেয়াল, নাকি গাণিতিক নিশ্চয়তা? Ramsey theory বলে, বস্তু যথেষ্ট বেশি হলে কিছু নিয়মিত নকশা অবশ্যই থাকবে, যত এলোমেলোভাবেই সাজান। গণিতবিদ Theodore Motzkin-এর বলে উদ্ধৃত একটি কথা এই ভাবনাকে প্রকাশ করে: সম্পূর্ণ বিশৃঙ্খলা অসম্ভব।

পর্ব ৩২ “Pigeonhole principle — সহজ থেকে generalized”-এ বাজারঘরের ছয়জন রাইডারের গল্প দেখেছেন: প্রতি দুজন হয় সহকর্মী, নয়তো অপরিচিত; ছয়জনে সবসময় তিনজন পরস্পর সহকর্মী বা তিনজন পরস্পর অপরিচিত। গ্রাফের ভাষায়, complete graph K6-এর প্রতিটি edge লাল (সহকর্মী) বা নীল (অপরিচিত) করলে একটি একরঙা ত্রিভুজ থাকবেই। এই পর্বে সেই প্রশ্নকে সাধারণ করি।

সংজ্ঞা ১.১ (Ramsey number)

s, t ≥ 2 পূর্ণসংখ্যা। Ramsey number R(s, t) হলো সবচেয়ে ছোট ধনাত্মক পূর্ণসংখ্যা N, যাতে KN-এর edge-গুলোকে লাল আর নীলে যেভাবেই রাঙানো হোক, হয় এমন s-টি vertex আছে যাদের মধ্যের সব edge লাল (লাল Ks), নয়তো এমন t-টি vertex আছে যাদের মধ্যের সব edge নীল (নীল Kt).

একই কথা একটিমাত্র গ্রাফ দিয়ে বলা যায়: লাল edge-গুলোকে গ্রাফ G ধরুন, তাহলে নীল edge হলো G-এর complement. লাল Ks মানে G-তে s আকারের একটি clique (পরস্পর যুক্ত vertex-এর দল), আর নীল Kt মানে t আকারের একটি independent set. তাই R(s, t) হলো সবচেয়ে ছোট N, যাতে N-vertex-এর প্রতিটি গ্রাফে s-clique বা t-independent set থাকে। সংজ্ঞা থেকে সরাসরি দুটি তথ্য:

  • প্রতিসাম্য: R(s, t) = R(t, s), কারণ দুই রং অদলবদল করলেই হয়।
  • প্রান্তিক মান: R(2, t) = t. Kt-এ একটিও লাল edge থাকলে সেটি লাল K2, না থাকলে পুরোটা নীল Kt; আর Kt−1-কে পুরো নীল করলে দুটোই এড়ানো যায়।

একটি Ramsey সংখ্যা জানতে দুই দিকের প্রমাণ লাগে। ওপরের সীমা R ≤ N মানে KN-এর প্রতিটি রঙে নকশাটি আছে। নিচের সীমা R > N − 1 মানে KN−1-এর একটি “ভালো” রং দেখানো, যাতে নকশাটি নেই। পর্ব ৩২-এ R(3, 3) ≤ 6 প্রমাণ হয়েছে pigeonhole দিয়ে, আর K5-এর পঞ্চভুজ-তারকা রং (বাহু লাল, কর্ণ নীল) দেখিয়েছে R(3, 3) > 5. দুই মিলে R(3, 3) = 6. বড় s, t-তে এই দুই দিকের ফাঁক কতটা কঠিন হতে পারে, সেটাই এই পর্বের প্রথম অর্ধেকের গল্প।

২ · Ramsey-র উপপাদ্য — দুটি ওপরের সীমা

প্রথম প্রশ্ন: R(s, t) কি সবসময় সসীম? অর্থাৎ যেকোনো s, t-এর জন্য কি এমন N আছে? উত্তর হ্যাঁ, আর প্রমাণটি একই সঙ্গে একটি সংখ্যাগত সীমাও দেয়।

উপপাদ্য ২.১ (Ramsey-র উপপাদ্য, দুই রঙের গ্রাফ রূপ)

সব s, t ≥ 3-এর জন্য R(s, t) সসীম, আর R(s, t) ≤ R(s − 1, t) + R(s, t − 1).

প্রমাণ (s + t-এর ওপর induction; ভিত্তি R(2, t) = t আর R(s, 2) = s সসীম):

  1. N = R(s − 1, t) + R(s, t − 1) নিন (induction-এর অনুমানে দুটিই সসীম), আর KN-এর যেকোনো লাল-নীল রং ধরুন। — সেটআপ
  2. একটি vertex v বাছুন। v থেকে N − 1টি edge. যাদের সঙ্গে v-এর edge লাল, তারা সেট A; নীল হলে সেট B. তাহলে |A| + |B| = N − 1. — ভাগ
  3. যদি |A| ≤ R(s − 1, t) − 1 আর |B| ≤ R(s, t − 1) − 1 হতো, তবে |A| + |B| ≤ N − 2, বিরোধ। তাই |A| ≥ R(s − 1, t) অথবা |B| ≥ R(s, t − 1). — pigeonhole
  4. ক্ষেত্র |A| ≥ R(s − 1, t): A-এর ভেতরের রঙে হয় লাল Ks−1, নয়তো নীল Kt. নীল Kt হলে কাজ শেষ। লাল Ks−1 হলে তার প্রতিটি vertex v-এর সঙ্গে লাল edge-এ যুক্ত, তাই v যোগ করলে লাল Ks. — R(s − 1, t)-এর সংজ্ঞা
  5. ক্ষেত্র |B| ≥ R(s, t − 1): একই যুক্তিতে লাল Ks, নয়তো B-এর নীল Kt−1 আর v মিলে নীল Kt. ∎ — প্রতিসাম্য

নিচের stepper s = t = 3-এ একটি নির্দিষ্ট রঙে প্রমাণটি চালায়। এখানে R(2, 3) + R(3, 2) = 3 + 3 = 6, অর্থাৎ পর্ব ৩২-এর ফলই নতুন করে আসে।

1N = R(2,3) + R(3,2) = 62v = 0: 5টি edge, |A| + |B| = 53লাল: 1, 2, 3 · নীল: 4, 54|A| = 3 ≥ R(2,3) = 352–3 লাল ⇒ লাল {0, 2, 3}6নইলে 1, 2, 3 নীল K₃
vertex 0-এর চারপাশ
A (লাল)
B (নীল)
A-র ভেতরে
  1. N বাছাই। R(2, 3) = 3 আর R(3, 2) = 3, তাই N = 6. দাবি: K6-এর যেকোনো লাল-নীল রঙে একরঙা ত্রিভুজ আছে।
  2. একটি vertex. v = 0 থেকে ৫টি edge. লাল প্রতিবেশী A আর নীল প্রতিবেশী B মিলে ৫ জন, তাই |A| ≥ 3 বা |B| ≥ 3; দুটিই ২ বা কম হলে মোট ৪-এর বেশি হতো না।
  3. এই রঙে। ধরুন 0 থেকে 1, 2, 3-এর edge লাল আর 4, 5-এর edge নীল। তাহলে A = {1, 2, 3}, B = {4, 5}.
  4. সঠিক দিক। |A| = 3 = R(2, 3). সংজ্ঞা অনুযায়ী A-র তিনটি vertex-এর ভেতরে হয় একটি লাল edge (লাল K2), নয়তো তিনটি edge-ই নীল (নীল K3).
  5. প্রথম সম্ভাবনা। এই রঙে 1–2 আর 1–3 নীল, কিন্তু 2–3 লাল। লাল K2 = {2, 3}, আর দুজনেই 0-এর সঙ্গে লাল edge-এ যুক্ত, তাই 0, 2, 3 একটি লাল ত্রিভুজ।
  6. দ্বিতীয় সম্ভাবনা। 1–2, 1–3, 2–3 সবই নীল হলে A নিজেই নীল ত্রিভুজ। দুই ক্ষেত্রেই একরঙা ত্রিভুজ মেলে; বাকি edge-এর রং দেখারও দরকার পড়েনি।

এখন recursive অসমতাকে একটি বদ্ধ সূত্রে বাঁধি। এখানে binomial coefficient C(n, k) আর Pascal-এর অভেদ C(n − 1, k − 1) + C(n − 1, k) = C(n, k) লাগবে (পর্ব ৩৪)।

উপপাদ্য ২.২ (Erdős–Szekeres, ১৯৩৫)

সব s, t ≥ 2-এর জন্য R(s, t) ≤ C(s + t − 2, s − 1). বিশেষত R(k, k) ≤ C(2k − 2, k − 1) < 4k−1.

  1. ভিত্তি (s = 2 বা t = 2): C(t, 1) = t = R(2, t), আর C(s, s − 1) = s = R(s, 2). — প্রান্তিক মান
  2. ধাপ: s, t ≥ 3 আর s + t-এর ছোট সব জোড়ায় দাবি সত্য ধরুন। উপপাদ্য ২.১ আর induction-এর অনুমান থেকে R(s, t) ≤ C(s + t − 3, s − 2) + C(s + t − 3, s − 1). — strong induction
  3. Pascal-এর অভেদে ডান দিক = C(s + t − 2, s − 1). — পর্ব ৩৪
  4. s = t = k-এ C(2k − 2, k − 1) হলো (1 + 1)2k−2 = 4k−1-এর বিস্তারের একটি পদ, আর k ≥ 2-এ অন্য পদও আছে, তাই কঠোরভাবে ছোট। ∎ — binomial theorem

এই সীমা কতটা ভালো? R(3, 4)-এ দুটিই দেয় 10. একটি সূক্ষ্ম parity যুক্তি একে 9-এ নামায়।

উপপাদ্য ২.৩ (parity উন্নতি)

R(s − 1, t) আর R(s, t − 1) দুটিই জোড় হলে R(s, t) ≤ R(s − 1, t) + R(s, t − 1) − 1.

  1. a = R(s − 1, t), b = R(s, t − 1), N = a + b − 1 (বিজোড়)। বিরোধের জন্য ধরুন KN-এর এমন রং আছে যাতে লাল Ks বা নীল Kt নেই। — বিরোধ
  2. উপপাদ্য ২.১-এর ধাপ ৪–৫ অনুযায়ী প্রতিটি vertex-এর লাল degree ≤ a − 1 আর নীল degree ≤ b − 1. দুটির যোগ N − 1 = a + b − 2, তাই প্রতিটি vertex-এর লাল degree ঠিক a − 1. — সমতা জোর করে
  3. a জোড়, তাই a − 1 বিজোড়। বিজোড় সংখ্যক (N) vertex-এর প্রতিটির লাল degree বিজোড় হলে লাল degree-র যোগ বিজোড়। কিন্তু handshake lemma অনুযায়ী এই যোগ লাল edge-সংখ্যার দ্বিগুণ, জোড়। বিরোধ। ∎ — পর্ব ৫৭

R(2, 4) = 4 আর R(3, 3) = 6 দুটিই জোড়, তাই R(3, 4) ≤ 9. পরের অংশে K8-এর একটি ভালো রং দেখাবে R(3, 4) > 8, অর্থাৎ R(3, 4) = 9. তারপর R(4, 4) ≤ R(3, 4) + R(4, 3) = 18, আর এটিও হুবহু সত্য মান।

৩ · নিচের সীমা — নির্মাণ, এলোমেলো রং আর জানা মান

নিচের সীমার জন্য একটি “ভালো” রং দেখাতে হয়। ছোট ক্ষেত্রে সবচেয়ে সফল কৌশল হলো circulant রং: vertex 0, 1, …, n − 1 বৃত্তে বসান, আর edge {i, j}-এর রং ঠিক করুন শুধু পার্থক্য (j − i) mod n দিয়ে। তাহলে বৃত্ত ঘোরালে রং বদলায় না, আর একটি vertex-এর চারপাশ যাচাই করলেই প্রায় সব বোঝা যায়। K5-এর পঞ্চভুজ রংটিও তাই: পার্থক্য ±1 লাল।

K8-এর একটি রং: লাল ত্রিভুজ নেই, নীল K4 নেই

লাল (মোটা): পার্থক্য ±1 (অষ্টভুজের বাহু) আর 4 (বিপরীত vertex), মোট ১২টি। নীল (ড্যাশ): পার্থক্য ±2 আর ±3, বাকি ১৬টি। লাল গ্রাফটির নাম Wagner graph.

Circulant colouring of K8 with red differences 1, 4, 7: no red triangle and no blue K4 01234567 লাল ১২টি · নীল ১৬টি

কেন কাজ করে? লাল ত্রিভুজ i, j, k-তে j − i আর k − j দুটি লাল পার্থক্য, আর তাদের যোগ k − i-কেও লাল হতে হবে। কিন্তু {1, 4, 7}-এর যেকোনো দুটির যোগ mod 8-এ 2, 5, 0, 3 বা 6, কখনো 1, 4 বা 7 নয়। নীল K4-এর জন্য চারটি vertex লাগবে যাদের কোনো দুটি পাশাপাশি বা বিপরীত নয়; অষ্টভুজে পাশাপাশি নয় এমন চারটি vertex মানে প্রতি দ্বিতীয় vertex, যেমন 0, 2, 4, 6, কিন্তু 0 আর 4 বিপরীত। হাতের এই যুক্তি নিচের ব্লক সরাসরি গুনে মেলায়, আর একই কৌশলে আরও দুটি বিখ্যাত রং পরীক্ষা করে: K13-এ পার্থক্য {1, 5, 8, 12} লাল (R(3, 5) > 13), আর K17-এ mod 17-এর বর্গ সংখ্যাগুলো লাল, যাকে Paley graph বলে (R(4, 4) > 17).

from itertools import combinations

def circulant(n, diffs):
    """Red edge {i, j} when (j - i) mod n is in diffs; every other edge is blue."""
    return {frozenset((i, j)) for i, j in combinations(range(n), 2)
            if (j - i) % n in diffs}

def biggest(n, red, colour):
    """Largest set of vertices whose every pair has the given colour."""
    best = 1
    for k in range(2, n + 1):
        found = False
        for S in combinations(range(n), k):
            if all((frozenset(p) in red) == (colour == "red")
                   for p in combinations(S, 2)):
                found = True
                break
        if not found:
            break
        best = k
    return best

cases = [("R(3,4) > 8", 8, {1, 4, 7}),
         ("R(3,5) > 13", 13, {1, 5, 8, 12}),
         ("R(4,4) > 17", 17, {1, 2, 4, 8, 9, 13, 15, 16})]
for name, n, diffs in cases:
    red = circulant(n, diffs)
    r, b = biggest(n, red, "red"), biggest(n, red, "blue")
    print(f"{name}: K{n}, {len(red)} red + {n*(n-1)//2 - len(red)} blue edges;"
          f" largest red clique {r}, blue clique {b}")

# R(4,4) uses the quadratic residues mod 17 (Paley graph)
print("squares mod 17:", sorted({x * x % 17 for x in range(1, 17)}))

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

R(3,4) > 8: K8, 12 red + 16 blue edges; largest red clique 2, blue clique 3
R(3,5) > 13: K13, 26 red + 52 blue edges; largest red clique 2, blue clique 4
R(4,4) > 17: K17, 68 red + 68 blue edges; largest red clique 3, blue clique 3
squares mod 17: [1, 2, 4, 8, 9, 13, 15, 16]

প্রথম লাইন: সবচেয়ে বড় লাল clique 2 (লাল ত্রিভুজ নেই) আর নীল 3 (নীল K4 নেই), তাই R(3, 4) > 8, আর §২-এর সঙ্গে মিলে R(3, 4) = 9. দ্বিতীয় লাইনে লাল ত্রিভুজ নেই, নীল K5 নেই: R(3, 5) > 13; recursive সীমা R(3, 5) ≤ R(2, 5) + R(3, 4) = 5 + 9 = 14, তাই R(3, 5) = 14. তৃতীয় লাইনে দুই রঙেই সর্বোচ্চ clique 3, তাই R(4, 4) > 17, আর ১৮ ওপরের সীমা: R(4, 4) = 18. শেষ লাইন দেখায় লাল পার্থক্যগুলো সত্যিই mod 17-এর শূন্য-নয় বর্গ। 17 ≡ 1 (mod 4) বলে −1-ও একটি বর্গ, তাই পার্থক্যের রং দিক-নিরপেক্ষ।

বড় k-তে হাতে বানানো রং আর কাজ করে না। পর্ব ৪৩ “Probabilistic method আর randomized algorithm”-এ Erdős-এর ১৯৪৭ সালের probabilistic method দেখেছেন: এলোমেলো রঙে একরঙা Kk-এর প্রত্যাশিত সংখ্যা 1-এর কম হলে ভালো রং আছে, ফলে R(k, k) > 2k/2. সেই প্রমাণ এখানে আর দোহরাই না। দুই সীমা পাশাপাশি রাখলে

2k/2 < R(k, k) < 4k−1 (k ≥ 3),

অর্থাৎ বৃদ্ধি সূচকীয়, কিন্তু ভিত্তি √2 আর 4-এর মাঝে কোথায়, তা আজও অজানা (ভাবনার প্রশ্ন ৩)। জানা ছোট মানগুলো নিচে; এগুলো Stanisław Radziszowski-এর নিয়মিত হালনাগাদ হওয়া জরিপ “Small Ramsey Numbers” (Electronic Journal of Combinatorics) অনুযায়ী উল্লেখ করা হয়।

Ramsey সংখ্যামানমন্তব্য
R(3, 3)6পর্ব ৩২; হাতে প্রমাণ
R(3, 4), R(3, 5)9, 14§২–৩-এর যুক্তি; Greenwood ও Gleason, ১৯৫৫
R(4, 4)18Paley রং; Greenwood ও Gleason, ১৯৫৫
R(3, 6) … R(3, 9)18, 23, 28, 36১৯৬০–১৯৯০-এর দশকে, কিছু কম্পিউটারের সাহায্যে
R(4, 5)25McKay ও Radziszowski, ১৯৯৫, বড় কম্পিউটার অনুসন্ধানে
R(5, 5)43 থেকে 46-এর মধ্যেনিচে Exoo (১৯৮৯), ওপরে Angeltveit ও McKay (২০২৪ সালের preprint)
R(3, 3, 3)17তিন রঙে একরঙা ত্রিভুজ; Greenwood ও Gleason, ১৯৫৫

শেষ সারি দেখায় উপপাদ্যটি যেকোনো r রঙে চলে: R(s1, …, sr) সসীম, প্রমাণ §২-এর মতোই। এমনকি গ্রাফের বদলে k-উপাদানের subset-কে রং করলেও (hypergraph Ramsey) সসীমতা থাকে; Frank Ramsey-র ১৯৩০ সালে প্রকাশিত মূল উপপাদ্য ছিল এই সাধারণ রূপে (ভাবনার প্রশ্ন ১)।

৪ · সংখ্যায় Ramsey — Schur, van der Waerden আর Erdős–Szekeres

বাজারঘর ১ থেকে n নম্বরের কুপনকে দুই ক্যাম্পেইনে ভাগ করতে চায়, লাল আর নীল। শর্ত: একই ক্যাম্পেইনের দুটি কুপন নম্বরের যোগফল (একই নম্বর দুবার নিলেও) সেই ক্যাম্পেইনের কোনো নম্বর হবে না, যাতে “দুটি মিলিয়ে তৃতীয়টি” ধরনের প্রতারণা না হয়। n কত পর্যন্ত এটি সম্ভব?

উপপাদ্য ৪.১ (Schur-এর উপপাদ্য, ১৯১৬)

প্রতিটি r ≥ 1-এর জন্য এমন N আছে যে {1, 2, …, N}-কে r রঙে যেভাবেই রাঙানো হোক, একই রঙের x, y, z (x = y হতে পারে) পাওয়া যায় যাতে x + y = z.

  1. Rr = R(3, 3, …, 3) (r রং) নিন, যা সসীম (§৩)। N = Rr − 1 ধরুন, আর {1, …, N}-এর যেকোনো r-রং χ নিন। — সেটআপ
  2. vertex 0, 1, …, N নিয়ে KN+1 বানান; edge {i, j}-এর রং χ(|i − j|). |i − j| সবসময় 1 থেকে N-এর মধ্যে, তাই রং সংজ্ঞায়িত। — পার্থক্যে রং
  3. KN+1 = KRr, তাই একটি একরঙা ত্রিভুজ i < j < k আছে। — Ramsey
  4. x = j − i, y = k − j, z = k − i নিন। তিনটি একই রঙের, আর x + y = z. ∎ — বীজগণিত

দুই রঙে R(3, 3) = 6, তাই N = 5: 1..5-এর যেকোনো দুই রঙে একরঙা x + y = z আছে। আর 1..4-এ রং {1, 4} লাল, {2, 3} নীল সফল (1 + 1 = 2 আর 2 + 2 = 4 রং পাল্টায়, 1 + 3 = 4 রং মেলে না)। তাই বাজারঘর বড়জোর ৪টি কুপন পর্যন্ত যেতে পারে; সবচেয়ে বড় এমন n-কে Schur number S(r) বলে, আর S(2) = 4. তিন রঙে S(3) = 13 জানা।

একই ধাঁচের আরেকটি বিখ্যাত ফল arithmetic progression (সমান্তর ধারা) নিয়ে। দৈর্ঘ্য k-এর সমান্তর ধারা মানে a, a + d, …, a + (k − 1)d, যেখানে d ≥ 1.

উপপাদ্য ৪.২ (van der Waerden-এর উপপাদ্য, ১৯২৭)

যেকোনো r আর k-এর জন্য এমন সংখ্যা W(r, k) আছে যে {1, …, W(r, k)}-কে r রঙে রাঙালে দৈর্ঘ্য k-এর একটি একরঙা সমান্তর ধারা থাকবেই। W(2, 3) = 9.

সাধারণ উপপাদ্যের প্রমাণ (রঙের “color focusing” নামের একটি দ্বৈত induction) দীর্ঘ, এখানে বাদ রাখছি; প্রমাণটি পাওয়া যায় Graham, Rothschild আর Spencer-এর বই “Ramsey Theory”-তে। কিন্তু W(2, 3) = 9-এর দাবি যাচাই করা সহজ: 1..8-এর সব 28 = 256টি রং আর 1..9-এর 512টি রং গুনুন। নিচের ব্লক তা করে, আর Schur-এর S(2) = 4-ও মেলায়।

from itertools import product

def has_mono_ap(col):                 # col[i] = colour of i+1
    n = len(col)
    for a in range(n):
        for d in range(1, n):
            if a + 2 * d >= n:
                break
            if col[a] == col[a + d] == col[a + 2 * d]:
                return True
    return False

def has_mono_schur(col):              # x + y = z, x = y allowed
    n = len(col)
    return any(col[x - 1] == col[y - 1] == col[x + y - 1]
               for x in range(1, n + 1) for y in range(x, n + 1) if x + y <= n)

for n in (8, 9):
    good = [c for c in product("RB", repeat=n) if not has_mono_ap(c)]
    print(f"1..{n}: {2**n} colourings, {len(good)} with no one-colour 3-AP")
    if good:
        print("   e.g.", "".join(good[0]))
for n in (4, 5):
    good = [c for c in product("RB", repeat=n) if not has_mono_schur(c)]
    print(f"Schur 1..{n}: {len(good)} sum-free colourings", "".join(good[0]) if good else "")

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

1..8: 256 colourings, 6 with no one-colour 3-AP
   e.g. RRBBRRBB
1..9: 512 colourings, 0 with no one-colour 3-AP
Schur 1..4: 2 sum-free colourings RBBR
Schur 1..5: 0 sum-free colourings 

1..8-এ ৬টি রং একরঙা ৩-পদের সমান্তর ধারা এড়ায়, যেমন RRBBRRBB (লাল 1, 2, 5, 6; নীল 3, 4, 7, 8). 1..9-এ একটিও নয়: W(2, 3) = 9. Schur-এর অংশে 1..4-এর দুটি সফল রং (RBBR আর তার রং-অদলবদল BRRB), যা ওপরে হাতে পাওয়া {1, 4} / {2, 3} ভাগ; 1..5-এ শূন্য, তাই S(2) = 4. দুই ক্ষেত্রেই উপপাদ্য “আছে” বলে, আর কম্পিউটার সব রং গুনে সঠিক সংখ্যাটি দেয়। n বড় হলে 2n রং দ্রুত অসাধ্য হয়; W(2, 6) = 1132-এর মতো মান বের করতে SAT solver লেগেছে (ভাবনার প্রশ্ন ৪)।

Erdős–Szekeres আবার, এবার Ramsey-র চোখে

পর্ব ৩২-এ Erdős–Szekeres theorem প্রমাণ করেছেন: (r − 1)(s − 1) + 1টি ভিন্ন সংখ্যার যেকোনো ক্রমে দৈর্ঘ্য r-এর বর্ধমান বা দৈর্ঘ্য s-এর হ্রাসমান subsequence আছে। Ramsey দিয়ে দুর্বলতর রূপটি এক লাইনে আসে। ক্রম a1, …, aN-এ i < j জোড়াকে লাল রাঙান যদি ai < aj, নইলে নীল। একটি লাল Kr-এর সব জোড়া বর্ধমান, অর্থাৎ সেটি দৈর্ঘ্য r-এর বর্ধমান subsequence; নীল Ks হ্রাসমান। তাই N ≥ R(r, s) যথেষ্ট। r = s = 4-এ Ramsey চায় 18টি পদ, Erdős–Szekeres মাত্র 10. শিক্ষা: Ramsey সাধারণ নিশ্চয়তা দেয়, কিন্তু সমস্যার বিশেষ কাঠামো (এখানে “বর্ধমান” সম্পর্কের transitivity) কাজে লাগালে সীমা অনেক কড়া হয়।

৫ · Extremal graph theory — Mantel-এর উপপাদ্য

Ramsey জিজ্ঞেস করে: গ্রাফ বা তার complement-এ নকশা কখন অনিবার্য? Extremal graph theory জিজ্ঞেস করে একটু ভিন্ন প্রশ্ন: একটি নিষিদ্ধ নকশা এড়িয়ে একটি গ্রাফে সর্বোচ্চ কয়টি edge রাখা যায়? বাজারঘরের ভাষায়: n-টি জেলা-গুদামের মধ্যে সরাসরি রুট বসাতে চাই, কিন্তু নিরাপত্তা-নিয়মে কোনো তিনটি গুদাম পরস্পর সরাসরি যুক্ত থাকতে পারবে না। সর্বোচ্চ কয়টি রুট?

একটি স্বাভাবিক উত্তর: গুদামগুলো দুই দলে ভাগ করুন, আর শুধু দুই দলের মধ্যে রুট দিন। এটি complete bipartite graph Ka,b, যার a · b-টি edge, আর কোনো ত্রিভুজ নেই (ত্রিভুজের তিন vertex-এর দুটি একই দলে পড়বে)। a + b = n হলে a · b সবচেয়ে বড় যখন দুই দল সমান বা প্রায় সমান: ⌊n/2⌋ · ⌈n/2⌉ = ⌊n²/4⌋. এর চেয়ে ভালো কি সম্ভব?

উপপাদ্য ৫.১ (Mantel-এর উপপাদ্য, ১৯০৭)

n-vertex-এর যে simple graph-এ কোনো ত্রিভুজ নেই (triangle-free graph), তার edge-সংখ্যা m ≤ ⌊n²/4⌋. সমতা হয় K⌊n/2⌋,⌈n/2⌉-এ।

প্রথম প্রমাণ (degree গুনে): d(v) মানে vertex v-এর degree.

  1. যেকোনো edge uv নিন। u আর v-এর কোনো সাধারণ প্রতিবেশী w থাকলে u, v, w একটি ত্রিভুজ হতো। তাই N(u) আর N(v) disjoint, আর d(u) + d(v) ≤ n. — triangle-free
  2. এই অসমতা m-টি edge-এ যোগ করুন: ∑uv ∈ E (d(u) + d(v)) ≤ n · m. — যোগ
  3. বাম দিকে প্রতিটি vertex v ঠিক d(v)-টি edge-এ আছে, আর প্রতিবার d(v) যোগ করে; তাই বাম দিক = ∑v d(v)². — double counting
  4. Cauchy–Schwarz অসমতা (বা “বর্গের গড় ≥ গড়ের বর্গ”): (∑ d(v))² ≤ n · ∑ d(v)². Handshake lemma-য় ∑ d(v) = 2m. — CS আর পর্ব ৫৭
  5. মিলিয়ে: 4m² ≤ n · ∑ d(v)² ≤ n · n · m, তাই m ≤ n²/4, আর m পূর্ণসংখ্যা বলে m ≤ ⌊n²/4⌋. ∎ — বীজগণিত

নিচের stepper একটি ৬-vertex-এর triangle-free গ্রাফে প্রতিটি ধাপের সংখ্যা দেখায়: ৫-চক্র 1–2–3–4–5–1, আর বাড়তি vertex 6, যা 1 আর 3-এর সঙ্গে যুক্ত। লক্ষ করুন গ্রাফটি bipartite নয় (বিজোড় চক্র আছে), তবু প্রমাণ চলে।

1n = 6, m = 7, ত্রিভুজ নেই2d = 3,2,3,2,2,2 · ∑d = 143প্রতি edge: N(u) ∩ N(v) = ∅4d(u) + d(v) ≤ 65∑d² = 34 ≤ n·m = 426(∑d)² = 196 ≤ 6·34 = 204
গ্রাফের সংখ্যা
∑ d(v)
edge-এ d(u)+d(v)
সিদ্ধান্ত
  1. গ্রাফ। Edge 12, 23, 34, 45, 51, 61, 63: n = 6, m = 7. ত্রিভুজ নেই (6-এর দুই প্রতিবেশী 1 আর 3 যুক্ত নয়)।
  2. Degree. vertex 1 আর 3-এর degree 3, বাকিদের 2. যোগ 14 = 2m, handshake lemma অনুযায়ী।
  3. সাধারণ প্রতিবেশী নেই। যেমন edge 6–1: N(6) = {1, 3}, N(1) = {2, 5, 6}, ছেদ ফাঁকা। সাধারণ প্রতিবেশী থাকলে ত্রিভুজ হতো।
  4. প্রতি edge-এ যোগফল। d(u) + d(v) সাতটি edge-এ: 5, 5, 5, 4, 5, 5, 5. সবই n = 6-এর মধ্যে, কারণ দুই প্রতিবেশী-সেট disjoint.
  5. দুইভাবে গোনা। যোগফল 34 = 3² + 2² + 3² + 2² + 2² + 2² = ∑d². আর 34 ≤ n · m = 42.
  6. Cauchy–Schwarz. (∑d)² = 196 ≤ 6 × 34 = 204. সাধারণভাবে 4m² ≤ n · ∑d² ≤ n²m, তাই m ≤ n²/4 = 9. এই গ্রাফের 7 সীমার মধ্যে; K3,3-এ ঠিক 9.

দ্বিতীয় প্রমাণ (induction): n = 1, 2-এ সত্য (0 ≤ 0, 1 ≤ 1). n ≥ 3 আর n − 2-এর জন্য সত্য ধরুন। G-তে edge না থাকলে কিছু প্রমাণের নেই; নইলে একটি edge uv নিন।

  1. প্রথম প্রমাণের ধাপ ১: d(u) + d(v) ≤ n. — triangle-free
  2. u আর v মুছে দিলে মোছা edge-সংখ্যা d(u) + d(v) − 1 (uv দুবার গোনা হয়েছে), যা ≤ n − 1. — গণনা
  3. বাকি G′-এর n − 2টি vertex, আর সেটিও triangle-free; induction-এর অনুমানে তার edge ≤ ⌊(n − 2)²/4⌋ = ⌊n²/4⌋ − n + 1. — (n − 2)²/4 = n²/4 − n + 1
  4. তাই m ≤ (⌊n²/4⌋ − n + 1) + (n − 1) = ⌊n²/4⌋. ∎ — যোগ

নিচের ব্লক n ≤ 7-এ সব গ্রাফের মধ্যে সর্বোচ্চ edge-এর triangle-free গ্রাফ খোঁজে (branch and bound: edge একে একে যোগ বা বাদ, আর বাকি সব যোগ করেও রেকর্ড ভাঙা অসম্ভব হলে সেই শাখা ছেঁটে ফেলা), আর ⌊n²/4⌋-এর সঙ্গে মেলায়। শেষে K4-হীন গ্রাফেও একই খোঁজ চালায়, যা §৬-এর Turán-এর উপপাদ্যের সঙ্গে মিলবে।

from itertools import combinations

def max_edges(n, r):
    """Most edges of a graph on n vertices with no K_r (branch and bound)."""
    pairs = list(combinations(range(n), 2))
    adj = [set() for _ in range(n)]
    best = [0, None]
    def closes_kr(u, v):              # would edge uv finish a K_r?
        common = adj[u] & adj[v]
        return any(all(b in adj[a] for a, b in combinations(S, 2))
                   for S in combinations(sorted(common), r - 2))
    def go(i, m):
        if m + len(pairs) - i <= best[0]:
            return                    # cannot beat the best: prune
        if i == len(pairs):
            best[0], best[1] = m, [sorted(a) for a in adj]
            return
        u, v = pairs[i]
        if not closes_kr(u, v):
            adj[u].add(v); adj[v].add(u)
            go(i + 1, m + 1)
            adj[u].discard(v); adj[v].discard(u)
        go(i + 1, m)
    go(0, 0)
    return best

for n in range(2, 8):
    m, g = max_edges(n, 3)
    print(f"n={n}: triangle-free max {m:2}, floor(n^2/4) = {n*n//4:2},"
          f" degrees {sorted(len(a) for a in g)}")
def turan(n, k):                      # edges of T(n, k): k nearly equal parts
    parts = [n // k + (i < n % k) for i in range(k)]
    return (n * n - sum(p * p for p in parts)) // 2
for n in (5, 6, 7):
    print(f"n={n}: K4-free max {max_edges(n, 4)[0]}, Turan T(n,3) {turan(n, 3)}")

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

n=2: triangle-free max  1, floor(n^2/4) =  1, degrees [1, 1]
n=3: triangle-free max  2, floor(n^2/4) =  2, degrees [1, 1, 2]
n=4: triangle-free max  4, floor(n^2/4) =  4, degrees [2, 2, 2, 2]
n=5: triangle-free max  6, floor(n^2/4) =  6, degrees [2, 2, 2, 3, 3]
n=6: triangle-free max  9, floor(n^2/4) =  9, degrees [3, 3, 3, 3, 3, 3]
n=7: triangle-free max 12, floor(n^2/4) = 12, degrees [3, 3, 3, 3, 4, 4, 4]
n=5: K4-free max 8, Turan T(n,3) 8
n=6: K4-free max 12, Turan T(n,3) 12
n=7: K4-free max 16, Turan T(n,3) 16

প্রতিটি n-এ সর্বোচ্চ ঠিক ⌊n²/4⌋. Degree-তালিকা extremal গ্রাফের চেহারা বলে দেয়: n = 7-এ তিনটি vertex-এর degree 4 আর চারটির 3, অর্থাৎ K3,4 (৩ জনের দল প্রত্যেকে অন্য দলের ৪ জনের সঙ্গে যুক্ত)। n = 6-এ সবাই 3: K3,3. শেষ তিন লাইনে K4-হীন গ্রাফের সর্বোচ্চ edge Turán graph T(n, 3)-এর সমান। Branch and bound ছাড়া n = 7-এ 221 ≈ ২১ লাখ গ্রাফ দেখতে হতো; ছাঁটাই সেই কাজ খুব ছোট করে, কিন্তু n বাড়লে এটিও দ্রুত অসাধ্য হয়। তাই উপপাদ্যের প্রমাণই আসল নিশ্চয়তা।

৬ · Turán-এর উপপাদ্য — Kr+1 এড়ালে সেরা গ্রাফ

ত্রিভুজের বদলে K4, K5 নিষিদ্ধ হলে? Mantel-এর গঠন স্বাভাবিকভাবে বাড়ে: দুই দলের বদলে r দল।

সংজ্ঞা ৬.১ (Turán graph T(n, r))

n-টি vertex-কে r-টি দলে এমনভাবে ভাগ করুন যাতে দলের আকার যতটা সম্ভব সমান (যেকোনো দুটির পার্থক্য বড়জোর 1), আর আলাদা দলের প্রতিটি জোড়া vertex যুক্ত করুন, একই দলের কোনো জোড়া নয়।

T(n, r)-এ কোনো Kr+1 নেই: r + 1টি vertex-এর দুটি একই দলে পড়বে (pigeonhole), আর তারা যুক্ত নয়। দলের আকার n1, …, nr হলে edge-সংখ্যা (n² − ∑ ni²)/2, কারণ মোট n² ক্রমজোড়া থেকে একই দলের জোড়া বাদ দিয়ে দুই দিকের গণনা ২ দিয়ে ভাগ করতে হয়। যেমন T(10, 3)-এ দল 4, 3, 3: (100 − 16 − 9 − 9)/2 = 33টি edge.

উপপাদ্য ৬.২ (Turán-এর উপপাদ্য, ১৯৪১)

r ≥ 2. n-vertex-এর যে simple graph-এ Kr+1 নেই, তার edge-সংখ্যা সর্বোচ্চ T(n, r)-এর edge-সংখ্যা, আর সমতা কেবল T(n, r)-এ। ফলে m ≤ (1 − 1/r) · n²/2.

r = 2-এ এটিই Mantel. সাধারণ প্রমাণ এখানে দিচ্ছি না; Aigner আর Ziegler-এর “Proofs from THE BOOK”-এ পাঁচটি আলাদা প্রমাণ আছে, আর তার একটি Mantel-এর induction প্রমাণেরই বিস্তার (একটি বৃহত্তম clique সরিয়ে induction). শেষ অসমতাটি আসে কারণ ∑ ni² ≥ n²/r (আবার Cauchy–Schwarz). ওপরের ব্লকে n = 5, 6, 7-এ K4-হীন সর্বোচ্চ 8, 12, 16, ঠিক T(n, 3)-এর মান।

Ramsey আর Turán গুলিয়ে ফেলবেন না। Ramsey বলে: N ≥ R(s, t) হলে যেকোনো গ্রাফে s-clique বা t-independent set আছে; edge কম-বেশি যা-ই হোক। Turán বলে: edge-সংখ্যা T(n, r)-এর চেয়ে বেশি হলে Kr+1 থাকবেই। একটি “রঙের” নিশ্চয়তা, অন্যটি “ঘনত্বের”।

৭ · Sperner-এর উপপাদ্য আর LYM অসমতা

এবার গ্রাফ ছেড়ে সেটের পরিবার। বাজারঘর ৪ ধরনের পণ্য (চাল, ডাল, তেল, চিনি; নাম 1, 2, 3, 4) থেকে কম্বো অফার বানায়; প্রতিটি অফার পণ্যের একটি subset. নিয়ম: কোনো অফার আরেকটির ভেতরে থাকতে পারবে না, নইলে ক্রেতা বড় অফারের পণ্য থেকে ছোট অফারটি নিজেই বানিয়ে নিয়ম ফাঁকি দিতে পারে। সর্বোচ্চ কয়টি অফার সম্ভব?

পর্ব ৫৬ “Partial order, Hasse diagram, topological sort আর lattice”-এর ভাষায়: power set P([n]) (এখানে [n] = {1, …, n}) ⊆ সম্পর্কে একটি poset, আর প্রশ্নটি হলো এর বৃহত্তম antichain, অর্থাৎ পরস্পর অতুলনীয় subset-এর পরিবার। একটি স্বাভাবিক উত্তর: একই আকারের সব subset (একটি “স্তর”), কারণ একই আকারের দুটি আলাদা সেট একে অপরের ভেতরে থাকতে পারে না। সবচেয়ে বড় স্তর মাঝেরটি।

উপপাদ্য ৭.১ (Sperner-এর উপপাদ্য, ১৯২৮)

P([n])-এর যেকোনো antichain F-এ |F| ≤ C(n, ⌊n/2⌋), আর মাঝের স্তর এই আকারে পৌঁছায়।

P({1, 2, 3, 4})-এর Hasse diagram

প্রতিটি বাক্স একটি subset (12 মানে {1, 2}); দাগ মানে এক উপাদান যোগ। হলুদ: মাঝের স্তর, C(4, 2) = 6টি সেটের antichain. বেগুনি মোটা দাগ: আরেকটি antichain {12, 13, 14, 234}, যা কোনো একক স্তরে নয়।

Hasse diagram of the subsets of {1,2,3,4}: middle layer highlighted, and the antichain 12, 13, 14, 234 outlined ∅12341213142324341231241342341234

প্রমাণের চাবি একটি গণনা। P([n])-এর একটি maximal chain হলো ∅ ⊂ {a1} ⊂ {a1, a2} ⊂ ⋯ ⊂ [n], প্রতিবার একটি করে উপাদান যোগ; ছবিতে নিচ থেকে শীর্ষে একটি পথ। উপাদান যোগের ক্রম একটি permutation, তাই maximal chain ঠিক n!-টি। আকার k-এর একটি সেট A কয়টি chain-এ আছে? প্রথমে A-এর k উপাদান যেকোনো ক্রমে (k! উপায়), তারপর বাকি n − k উপাদান ((n − k)! উপায়): k!(n − k)!-টি।

উপপাদ্য ৭.২ (LYM অসমতা)

P([n])-এর যেকোনো antichain F-এর জন্য ∑A ∈ F 1 / C(n, |A|) ≤ 1.

  1. প্রতিটি A ∈ F ঠিক |A|!(n − |A|)!-টি maximal chain-এ আছে। — ওপরের গণনা
  2. একটি chain-এর যেকোনো দুটি সেট তুলনীয়, আর F-এর কোনো দুটি সেট তুলনীয় নয়; তাই প্রতিটি chain F-এর বড়জোর একটি সেট ধরে। — antichain-এর সংজ্ঞা
  3. অতএব F-এর সেটগুলোর chain-সংখ্যার যোগ মোট chain-সংখ্যা ছাড়ায় না: ∑ |A|!(n − |A|)! ≤ n!. — disjoint গণনা
  4. দুই দিক n! দিয়ে ভাগ করলে ∑ 1/C(n, |A|) ≤ 1. ∎ — C(n, k) = n!/(k!(n − k)!)

Sperner-এর প্রমাণ: C(n, k) সবচেয়ে বড় k = ⌊n/2⌋-এ, তাই প্রতিটি পদ 1/C(n, |A|) ≥ 1/C(n, ⌊n/2⌋). LYM থেকে |F| / C(n, ⌊n/2⌋) ≤ 1. ∎ বাজারঘরের উত্তর: ৪টি পণ্যে বড়জোর C(4, 2) = 6টি অফার, যেমন সব দুই-পণ্যের কম্বো। প্রমাণের নামটি তিনজনের আদ্যক্ষর: Lubell (১৯৬৬), Yamamoto (১৯৫৪) আর Meshalkin (১৯৬৩), যাঁরা স্বাধীনভাবে এটি পান বলে উল্লেখ করা হয়।

1maximal chain: 4! = 242|A| = 2: 2!·2! = 4টি chain3|A| = 3: 3!·1! = 6টি chain4কোনো chain-এ F-এর দুটি নেই54 + 4 + 4 + 6 = 18 ≤ 2463/6 + 1/4 = 3/4 ≤ 1
chain-এর হিসাব
মোট chain
F-এর chain
LYM যোগ
  1. মোট chain. উপাদান 1, 2, 3, 4 যোগের প্রতিটি ক্রম একটি maximal chain, যেমন 2, 4, 1, 3 মানে ∅ ⊂ {2} ⊂ {2, 4} ⊂ {1, 2, 4} ⊂ [4]. মোট 4! = 24.
  2. দুই-উপাদানের সেট। {1, 2}-এর মধ্য দিয়ে যেতে হলে প্রথম দুটি যোগ 1 আর 2 (2! ক্রম), পরের দুটি 3 আর 4 (2! ক্রম): 4টি chain. {1, 3} আর {1, 4}-এও 4টি করে।
  3. তিন-উপাদানের সেট। {2, 3, 4}-এর জন্য প্রথম তিনটি যোগ 2, 3, 4 যেকোনো ক্রমে (3! = 6), তারপর 1 (1! = 1): 6টি chain.
  4. Antichain-এর শক্তি। একটি chain-এর সেটগুলো একে অপরের ভেতরে থাকে। {1, 2} আর {2, 3, 4} পরস্পরের ভেতরে নেই, তাই কোনো chain দুটিকেই ধরে না। প্রতিটি chain বড়জোর একবার গোনা।
  5. যোগ। 4 + 4 + 4 + 6 = 18টি আলাদা chain, যা মোট 24-এর বেশি হতে পারে না। (scratch-এ সব 24টি permutation গুনে মেলানো।)
  6. ভাগ। 24 দিয়ে ভাগ: 3 × (1/6) + 1/4 = 3/4 ≤ 1, এটিই LYM. প্রতিটি পদ ≥ 1/6 বলে যেকোনো antichain-এ |F| ≤ 6, আর মাঝের স্তর ঠিক 6.

নিচের ব্লক n ≤ 5-এ P([n])-এর সব antichain তালিকা করে, বৃহত্তমটির আকার C(n, ⌊n/2⌋)-এর সঙ্গে মেলায়, আর সর্বোচ্চ LYM-যোগ নির্ভুল ভগ্নাংশে (fractions) বের করে। Antichain-এর সংখ্যাগুলো Dedekind সংখ্যা, যা পর্ব ৬৯-এ monotone Boolean function গোনার সময় এসেছে।

from fractions import Fraction
from math import comb

def antichains(n):
    """Every antichain of subsets of {0..n-1}; a subset is a bitmask."""
    sets = sorted(range(2 ** n), key=lambda s: bin(s).count("1"))
    out = []
    def grow(i, chosen):
        out.append(chosen)
        for j in range(i, len(sets)):
            s = sets[j]               # keep s only if incomparable with all
            if all(s & t != s and s & t != t for t in chosen):
                grow(j + 1, chosen + [s])
    grow(0, [])
    return out

for n in range(1, 6):
    A = antichains(n)
    big = max(len(a) for a in A)
    lym = max(sum(Fraction(1, comb(n, bin(s).count("1"))) for s in a)
              for a in A)
    print(f"n={n}: {len(A):5} antichains, largest {big:2},"
          f" C(n,n//2) = {comb(n, n // 2):2}, max LYM sum = {lym}")

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

n=1:     3 antichains, largest  1, C(n,n//2) =  1, max LYM sum = 1
n=2:     6 antichains, largest  2, C(n,n//2) =  2, max LYM sum = 1
n=3:    20 antichains, largest  3, C(n,n//2) =  3, max LYM sum = 1
n=4:   168 antichains, largest  6, C(n,n//2) =  6, max LYM sum = 1
n=5:  7581 antichains, largest 10, C(n,n//2) = 10, max LYM sum = 1

প্রতিটি n-এ বৃহত্তম antichain ঠিক C(n, ⌊n/2⌋), আর LYM-যোগ কখনো 1 ছাড়ায় না (সর্বোচ্চ ঠিক 1, যা একটি পূর্ণ স্তরে হয়)। গণনায় ফাঁকা পরিবার আর {∅}-ও antichain, তাই n = 1-এ ৩টি। Antichain-এর সংখ্যা 3, 6, 20, 168, 7581 খুব দ্রুত বাড়ে; n = 9-এর Dedekind সংখ্যা ২০২৩ সালে কম্পিউটারে বের হয়েছে বলে জানা যায়। Sperner-এর প্রমাণ এক লাইনের গণনায় যা বলে, brute force তা কেবল ছোট n-এ মেলাতে পারে।

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

অঙ্ক ১: Ramsey সীমা

(ক) R(3, 4)-এর recursive আর binomial সীমা বের করুন; parity দিয়ে উন্নত করুন। (খ) R(3, 4) = 9 আর R(2, 5) = 5 জেনে R(3, 5) আর R(4, 4)-এর ওপরের সীমা দিন।

  1. (ক) R(2, 4) + R(3, 3) = 4 + 6 = 10; C(3 + 4 − 2, 2) = C(5, 2) = 10. 4 আর 6 দুটিই জোড়, তাই উপপাদ্য ২.৩-এ R(3, 4) ≤ 9.
  2. (খ) R(3, 5) ≤ R(2, 5) + R(3, 4) = 5 + 9 = 14 (সত্য মানের সমান)। R(4, 4) ≤ R(3, 4) + R(4, 3) = 18 (এটিও সত্য মান); binomial সীমা শুধু C(6, 3) = 20 দেয়।

অঙ্ক ২: গুদামের রুট

বাজারঘরের ১০টি গুদাম। (ক) কোনো তিনটি পরস্পর সরাসরি যুক্ত না হলে সর্বোচ্চ কয়টি রুট? (খ) কোনো চারটি পরস্পর যুক্ত না হলে?

  1. (ক) Mantel: ⌊100/4⌋ = 25, গুদামগুলো ৫ + ৫ দুই দলে ভাগ করে K5,5.
  2. (খ) Turán, r = 3: দল 4, 3, 3; edge (100 − 16 − 9 − 9)/2 = 33. যাচাই: (1 − 1/3) · 100/2 ≈ 33.3, আর 33 ≤ 33.3. (scratch-এ মেলানো।)

অঙ্ক ৩: কম্বো অফার

৬ ধরনের পণ্য থেকে কম্বো অফার, কোনো অফার আরেকটির ভেতরে নয়। (ক) সর্বোচ্চ কয়টি? (খ) কেউ ৮টি দুই-পণ্যের অফার আর ১০টি তিন-পণ্যের অফার একসঙ্গে প্রস্তাব করলেন। LYM দিয়ে দেখান এটি antichain হতে পারে না।

  1. (ক) Sperner: C(6, 3) = 20, সব তিন-পণ্যের কম্বো।
  2. (খ) LYM-যোগ 8/C(6, 2) + 10/C(6, 3) = 8/15 + 10/20 = 31/30 > 1, তাই কোথাও একটি দুই-পণ্যের অফার একটি তিন-পণ্যের অফারের ভেতরে পড়বেই। লক্ষ করুন মোট সংখ্যা 18 < 20, তবু অসম্ভব: Sperner-এর চেয়ে LYM সূক্ষ্মতর।

প্রমাণের ভুল ধরুন: “triangle-free মানেই bipartite”

একজন লিখলেন: “ত্রিভুজ না থাকলে গ্রাফটি দুই দলে ভাগ হয়, অর্থাৎ bipartite. দলের আকার a আর b হলে edge ≤ ab ≤ ⌊n²/4⌋. তাই Mantel প্রমাণিত। ∎”

ভুল কোথায়: প্রথম বাক্যটি মিথ্যা। Bipartite graph মানে কোনো বিজোড় চক্র নেই (পর্ব ৫৭); ত্রিভুজ না থাকা শুধু দৈর্ঘ্য 3-এর চক্র নিষেধ করে। C5 triangle-free কিন্তু bipartite নয়, আর §৫-এর stepper-এর গ্রাফও তাই। উপসংহারটি সত্য হলেও প্রমাণটি অবৈধ, কারণ সব triangle-free গ্রাফকে এটি ধরে না। সঠিক প্রমাণে degree-র যুক্তি (§৫) লাগে, যা কোনো দুই-দলের কাঠামো ধরে নেয় না।

আরও গভীরে: ২০২৩ সালে Campos, Griffiths, Morris আর Sahasrabudhe দেখান R(k, k) ≤ (4 − ε)k কোনো ধ্রুবক ε > 0-এর জন্য, যা প্রায় নব্বই বছরের পুরনো 4k সীমার প্রথম সূচকীয় উন্নতি বলে বর্ণিত। Turán-এর উপপাদ্যের বিস্তার Erdős–Stone–Simonovits উপপাদ্য যেকোনো নিষিদ্ধ গ্রাফ H-এর জন্য সর্বোচ্চ edge-এর ঘনত্ব H-এর chromatic number দিয়ে বলে দেয় (bipartite H ছাড়া)। আর van der Waerden-এর “ঘনত্ব” রূপ Szemerédi-র ১৯৭৫ সালের উপপাদ্য: ধনাত্মক ঘনত্বের যেকোনো পূর্ণসংখ্যা-সেটে যেকোনো দৈর্ঘ্যের সমান্তর ধারা আছে।

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

  • যেকোনো ছয়জনে তিনজন পরস্পর পরিচিত বা অপরিচিত, প্রমাণ করুন। একজনের ৫টি সম্পর্ক, ৩টি একই ধরনের; তারপর দুই ক্ষেত্র (পর্ব ৩২)।
  • R(3, 4) কত, আর কেন 8 নয়? 9; K8-এ পার্থক্য ±1, 4 লাল রঙে লাল ত্রিভুজ বা নীল K4 নেই।
  • ২০টি vertex-এর triangle-free গ্রাফে সর্বোচ্চ edge? ⌊400/4⌋ = 100, K10,10.
  • {1, …, 10}-এর subset-এ সবচেয়ে বড় antichain? C(10, 5) = 252.
  • W(2, 3) মানে কী? 1..9-এর যেকোনো দুই-রঙে একরঙা ৩-পদের সমান্তর ধারা আছে, 1..8-এ নাও থাকতে পারে।

৯ · AI-এর যুগে — Ramsey আর extremal দাবি যাচাই

এই বিষয়ে AI সহকারী সংজ্ঞা ঠিক বলে, কিন্তু সংখ্যা, শর্ত আর সাম্প্রতিক ফলে নিয়মিত ভুল করে। Ramsey সংখ্যা নিয়ে প্রশ্নের উত্তর বছরে বছরে বদলায়, আর অনেক মডেল পুরনো সীমা আত্মবিশ্বাসের সঙ্গে বলে। কয়েকটি পরিচিত ভুল:

AI-এর ভুলকীভাবে ধরবেন
Recursive সীমাকে সমতা ধরা, যেমন “R(4, 5) = 32”উপপাদ্য ২.১ শুধু ≤ বলে; জরিপে সত্য মান 25
নিচের সীমার জন্য “একটি রঙে নকশা নেই” না দেখিয়ে শুধু যুক্তি দেওয়ারংটি চান, আর ছোট ব্লকে সব clique গুনে যাচাই করুন
R(5, 5)-এর মতো খোলা সমস্যার মান “জানা” বলা, বা পুরনো সীমা বলাRadziszowski-এর জরিপ বা মূল প্রবন্ধ দেখুন; সাল লিখে রাখুন
Mantel-এ “triangle-free ⇒ bipartite”, বা Turán-এ দলের আকার অসমান রাখাC5 দিয়ে পাল্টা-উদাহরণ; ছোট n-এ brute force
Sperner-এ C(n, n/2) লেখা বিজোড় n-এ, বা LYM-এ chain গোনায় off-by-onen = 3, 4, 5-এ সব antichain গুনে মেলান

AI-কে Ramsey বা extremal প্রশ্ন করলে এমন কাঠামো দিন, যাতে প্রতিটি দাবি আলাদা করে যাচাই করা যায়:

নিচের প্রশ্নের উত্তর ধাপে ধাপে দাও: প্রশ্ন: [যেমন "R(3, 4) = 9 প্রমাণ করো"] ১. ওপরের সীমা আর নিচের সীমা আলাদা অংশে প্রমাণ করো। ২. প্রতিটি উপপাদ্য (Ramsey-র recursive সীমা, Mantel, Turán, LYM) ব্যবহারের আগে তার পূর্ণ শর্ত লেখো। ৩. নিচের সীমার জন্য রংটি স্পষ্ট লেখো (কোন edge লাল, কোনটি নীল)। ৪. প্রতিটি সংখ্যা কোথা থেকে এল, এক লাইনে দেখাও; সমতা আর অসমতা আলাদা রাখো। ৫. শুধু itertools দিয়ে রংটি যাচাই করার একটি ছোট Python কোড দাও, যাতে আমি নিজে চালাতে পারি। ৬. কোনো Ramsey সংখ্যার সাম্প্রতিক সীমা বললে সূত্র আর সাল দাও; নিশ্চিত না হলে স্পষ্ট বলো।

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

এই বিষয়ের দাবিগুলোর একটি সুবিধা আছে: নিচের সীমা মানে একটি নির্দিষ্ট রং, আর রং দেওয়া থাকলে কম্পিউটার কয়েক মিলিসেকেন্ডে তা যাচাই করে। কঠিন অংশ ওপরের সীমা, যেখানে সব রং দেখতে হয়; সেখানে প্রমাণের প্রতিটি ধাপ নিজে পড়ুন।

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

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

প্র ০১একটি যুক্তিবিদ্যার প্রবন্ধের সহায়ক lemma কীভাবে গণিতের একটি পুরো শাখা হয়ে উঠল?

Frank Plumpton Ramsey ছিলেন কেমব্রিজের এক বিস্ময়কর তরুণ, যিনি দর্শন, অর্থনীতি আর গণিতে স্থায়ী অবদান রাখেন। তাঁর “On a Problem of Formal Logic” প্রবন্ধটি ১৯৩০ সালে London Mathematical Society-র কার্যবিবরণীতে প্রকাশিত হয়; সেই বছরই মাত্র ছাব্বিশ বছর বয়সে তাঁর মৃত্যু হয়। প্রবন্ধের মূল লক্ষ্য ছিল যুক্তিবিদ্যার একটি decision problem: first-order logic-এর একটি বিশেষ শ্রেণির বাক্য সত্য কি না, তা যান্ত্রিকভাবে ঠিক করার পদ্ধতি। সেই পথে তিনি একটি সহায়ক ফল প্রমাণ করেন: একটি অসীম সেটের সব k-উপাদানের subset-কে সসীম কয়েকটি রঙে রাঙালে একটি অসীম উপসেট আছে যার সব k-subset একই রঙের। সসীম রূপও তিনি দেন। এটিই আজকের Ramsey-র উপপাদ্য।

মজার ব্যাপার, ফলটি প্রথমে তেমন মনোযোগ পায়নি। ১৯৩৫ সালে Paul Erdős আর George Szekeres একটি জ্যামিতিক প্রশ্নে কাজ করছিলেন: Esther Klein লক্ষ করেন সমতলে সাধারণ অবস্থানের যেকোনো পাঁচটি বিন্দুর চারটি একটি উত্তল চতুর্ভুজ বানায়, আর প্রশ্ন ওঠে n-ভুজের জন্য কয়টি বিন্দু লাগে। সমাধানের পথে তাঁরা Ramsey-র ফল স্বাধীনভাবে পুনরাবিষ্কার করেন, আর উপপাদ্য ২.২-এর binomial সীমা দেন। এই গল্প পরে “Happy Ending problem” নামে পরিচিত হয়, কারণ Klein আর Szekeres পরে বিয়ে করেন।

এরপর Erdős প্রায় একার উৎসাহে এই ধরনের প্রশ্নকে একটি ক্ষেত্রে পরিণত করেন, আর পরবর্তী দশকগুলোতে Graham, Rothschild, Spencer প্রমুখের কাজে “Ramsey theory” নামটি প্রতিষ্ঠিত হয়। Schur (১৯১৬) আর van der Waerden (১৯২৭)-এর ফল Ramsey-র আগেই এসেছিল, কিন্তু পরে একই পরিবারের সদস্য হিসেবে চেনা যায়।

যুক্তিবিদ্যায় ফিরে আসাও ঘটে: ১৯৭৭ সালে Paris আর Harrington Ramsey-র উপপাদ্যের একটি সামান্য পরিবর্তিত সসীম রূপ দেখান, যা সত্য কিন্তু Peano arithmetic-এ প্রমাণ করা যায় না। তার পূর্ণ আলোচনা পরিকল্পিত Theory of Computation কোর্স আর যুক্তিবিদ্যার উচ্চতর বইয়ের বিষয়।

মূল উপলব্ধি: Ramsey-র উপপাদ্য জন্মেছিল যুক্তিবিদ্যার একটি সহায়ক ধাপ হিসেবে, জ্যামিতির প্রশ্নে পুনরাবিষ্কৃত হয়, আর পরে “যথেষ্ট বড় কাঠামোয় শৃঙ্খলা অনিবার্য” এই একটি ভাবনার চারপাশে গোটা শাখা গড়ে ওঠে।

প্র ০২R(4, 4) = 18 জানা ১৯৫৫ থেকে, অথচ R(5, 5) আজও অজানা। কম্পিউটার দিয়ে সব রং দেখে ফেলা যায় না কেন?

R(5, 5) ≤ 42 কি না জানতে K42-এর সব লাল-নীল রং দেখতে হবে। K42-এ C(42, 2) = 861টি edge, তাই রং 2861টি, আর K43-এ 2903টি। মহাবিশ্বের পরমাণুর আনুমানিক সংখ্যাও এর তুলনায় নগণ্য। প্রতিসাম্য (vertex-এর নাম বদলালে একই রং) কাজে লাগালেও সংখ্যাটি অকল্পনীয় থাকে। তাই সরাসরি গণনা নয়, চতুর যুক্তি আর কম্পিউটারের মিশ্রণ লাগে।

নিচের সীমা 43 এসেছে Geoffrey Exoo-র ১৯৮৯ সালের একটি নির্মাণ থেকে: K42-এর একটি রং, যাতে একরঙা K5 নেই। ওপরের সীমা ধাপে ধাপে নেমেছে: McKay আর Radziszowski ১৯৯৭ সালে 49, Angeltveit আর McKay ২০১৮ সালে 48, আর ২০২৪ সালের একটি preprint-এ 46. শেষ কাজটি linear programming আর বিপুল কম্পিউটার-গণনা মিশিয়ে করা, আর লেখকদের বিবরণ অনুযায়ী গণনাগুলো স্বাধীনভাবে আবার চালিয়ে মেলানো হয়েছে। মূল কৌশল §২-এর মতো: একটি vertex-এর লাল আর নীল প্রতিবেশী যথাক্রমে (4, 5) আর (5, 4)-Ramsey-গ্রাফ, যাদের সংখ্যা সীমিত, আর সেগুলো জোড়া লাগানো যায় কি না পরীক্ষা করা।

Erdős-এর নামে একটি গল্প প্রচলিত: শক্তিশালী ভিনগ্রহবাসী এসে R(5, 5)-এর মান না জানালে পৃথিবী ধ্বংসের হুমকি দিলে আমাদের উচিত সব কম্পিউটার আর গণিতবিদ এক করে কাজে লাগানো; কিন্তু তারা R(6, 6) চাইলে উচিত তাদের আক্রমণ করা। গল্পটি Joel Spencer-সহ অনেকে উল্লেখ করেছেন; শব্দগুলো উৎসভেদে আলাদা। এর শিক্ষাটি সঠিক: প্রতিটি নতুন Ramsey সংখ্যা আগেরটির চেয়ে অনেক গুণ কঠিন।

এখানে একটি অসমতাও লক্ষণীয়। নিচের সীমা দেখাতে একটি রং যথেষ্ট, আর তা যে কেউ এক মুহূর্তে যাচাই করতে পারে (§৩-এর ব্লকের মতো)। ওপরের সীমা দেখাতে “কোনো রংই কাজ করে না” প্রমাণ করতে হয়, যা যাচাই করাও কঠিন। এটি NP আর co-NP-এর পার্থক্যের ছায়া; DSA কোর্সের পর্ব ৬৪ “P বনাম NP”-এ এই শ্রেণিগুলোর পরিচয় আছে।

মূল উপলব্ধি: রঙের সংখ্যা 2C(n, 2) হারে বাড়ে বলে Ramsey সংখ্যার সরাসরি গণনা অসম্ভব; অগ্রগতি আসে কাঠামোগত যুক্তি দিয়ে অনুসন্ধানের জায়গা ছোট করে, আর তার পরেও প্রতিটি নতুন মান এক বিশাল প্রকল্প।

প্র ০৩R(k, k)-এর বৃদ্ধি √2k আর 4k-এর মাঝে। এই ফাঁক কেন এত দিন টিকে আছে, আর কম্পিউটার বিজ্ঞানে এর গুরুত্ব কী?

ওপরের সীমা 4k এসেছে ১৯৩৫ সালের Erdős–Szekeres যুক্তি থেকে (উপপাদ্য ২.২), আর নিচের সীমা √2k ১৯৪৭ সালের Erdős-এর এলোমেলো রং থেকে (পর্ব ৪৩)। পরের দশকগুলোতে উন্নতি হয়েছে শুধু সামনের বহুপদী গুণকে: Spencer ১৯৭৫ সালে Lovász local lemma দিয়ে নিচের সীমা প্রায় দ্বিগুণ করেন, আর ওপরের সীমায় Thomason, Conlon প্রমুখ বহুপদী-চেয়ে-বড় কিন্তু সূচকীয়-চেয়ে-ছোট উন্নতি দেন। ভিত্তি 4 আর √2 প্রায় নব্বই বছর অনড় ছিল।

২০২৩ সালে Marcelo Campos, Simon Griffiths, Robert Morris আর Julian Sahasrabudhe একটি নতুন “book algorithm” দিয়ে প্রমাণ করেন R(k, k) ≤ (4 − ε)k, একটি ছোট কিন্তু নির্দিষ্ট ধ্রুবক ε-এর জন্য। এর পর অন্য গবেষকরা ε বাড়ানোর কাজ করেছেন বলে জানা যায়। নিচের ভিত্তি √2 এখনো অপরিবর্তিত বলে বর্ণিত।

কম্পিউটার বিজ্ঞানে প্রশ্নটি অন্যভাবে আসে। এলোমেলো রং প্রায় সবসময় ভালো, কিন্তু একটি নির্দিষ্ট, নিয়ম দিয়ে লেখা (explicit) রং খুঁজে পাওয়া কঠিন: এমন একটি গ্রাফ যাতে বড় clique আর বড় independent set কোনোটিই নেই। এই “explicit Ramsey graph” তৈরির সমস্যা pseudorandomness-এর সঙ্গে যুক্ত, যেমন randomness extractor (দুর্বল এলোমেলো উৎস থেকে প্রায় নিখুঁত এলোমেলো বিট বের করা); দুই-উৎস extractor থেকে Ramsey গ্রাফ পাওয়া যায় বলে উল্লেখ করা হয়, আর Chattopadhyay ও Zuckerman-এর ২০১৬ সালের কাজ এই দিকে বড় অগ্রগতি বলে বর্ণিত।

এখানে probabilistic method-এর মূল টানাপোড়েন দেখা যায়: “প্রায় সব বস্তু ভালো” প্রমাণ করা সহজ, কিন্তু একটি ভালো বস্তু হাতে তুলে দেওয়া কঠিন। খড়ের গাদায় প্রায় সবই সুই, তবু একটি দেখাতে পারি না।

মূল উপলব্ধি: R(k, k)-এর সূচকীয় ভিত্তি দুই দিকেই দীর্ঘদিন আটকে ছিল; ২০২৩ সালে ওপরের দিকে প্রথম ফাটল ধরে, আর explicit নির্মাণের কঠিনতা কম্পিউটার বিজ্ঞানের pseudorandomness-এর সঙ্গে সরাসরি জড়িত।

প্র ০৪Schur সংখ্যা S(5) = 160-এর মতো ফল SAT solver কীভাবে প্রমাণ করে, আর কম্পিউটারের প্রমাণে আস্থা রাখা যায় কীভাবে?

“1..n-কে r রঙে sum-free রাঙানো যায় কি?” প্রশ্নটি সহজেই propositional logic-এ লেখা যায়: প্রতিটি সংখ্যা i আর রং c-এর জন্য একটি variable xi,c (“i-এর রং c”), প্রতিটি i-এর অন্তত একটি রং, আর প্রতিটি x + y = z ও রং c-এর জন্য একটি clause “x, y, z তিনটিই c নয়”। ফর্মুলা satisfiable হলে রং আছে, unsatisfiable হলে নেই। এই ধরনের encoding পর্ব ০৭ “কাজে যুক্তি — specification, ধাঁধা আর SAT solver”-এ দেখেছেন, আর পর্ব ৭৭ “SAT আর SMT solver — discrete math দিয়ে software যাচাই”-এ বিস্তারিত আসবে।

S(4) = 44 জানা ছিল ১৯৬০-এর দশক থেকে। ২০১৭ সালে Marijn Heule SAT solver আর প্রতিসাম্য ভাঙার কৌশলে প্রমাণ করেন S(5) = 160: 1..160-কে পাঁচ রঙে sum-free রাঙানো যায়, কিন্তু 1..161-কে নয়। একই ধাঁচে Heule, Kullmann আর Marek ২০১৬ সালে “Boolean Pythagorean triples” সমস্যা মেটান: 1..7824-কে দুই রঙে রাঙানো যায় যাতে কোনো একরঙা a² + b² = c² নেই, কিন্তু 1..7825-এ যায় না। van der Waerden সংখ্যায় Kouril আর Paul ২০০৮ সালে W(2, 6) = 1132 দেখান, FPGA হার্ডওয়্যারসহ বিপুল গণনায় বলে বর্ণিত।

আস্থার প্রশ্ন এখানে গুরুত্বপূর্ণ। “Satisfiable” দাবি যাচাই সহজ: solver রংটি দেয়, আর §৪-এর মতো একটি ছোট কোড সেটি পরীক্ষা করে। “Unsatisfiable” দাবিতে solver-এর কথায় বিশ্বাস করা যথেষ্ট নয়, কারণ solver-এ bug থাকতে পারে। তাই আধুনিক solver একটি প্রমাণ-ফাইল (যেমন DRAT format) লেখে, যার প্রতিটি ধাপ একটি আলাদা, সরল আর আনুষ্ঠানিকভাবে যাচাই করা checker পরীক্ষা করে। Pythagorean triples-এর প্রমাণ-ফাইল প্রায় ২০০ terabyte, আর S(5)-এর আরও অনেক বড় বলে উল্লেখ করা হয়।

এতে একটি দার্শনিক প্রশ্নও ওঠে: কোনো মানুষ যে প্রমাণ পড়তে পারে না, তা কি “বোঝা”? চার রঙের উপপাদ্যের (পর্ব ৬৩) সময় থেকে এই বিতর্ক চলছে। সাধারণ উত্তর: বোঝা আর নিশ্চিত হওয়া আলাদা; যাচাইযোগ্য certificate নিশ্চয়তা দেয়, আর মানুষের লেখা প্রমাণ কারণ বোঝায়।

মূল উপলব্ধি: Ramsey-ধাঁচের সসীম প্রশ্ন SAT-এ সরাসরি অনুবাদ হয়; “আছে” দাবি একটি রং দিয়ে, আর “নেই” দাবি একটি স্বাধীনভাবে যাচাইযোগ্য প্রমাণ-ফাইল দিয়ে বিশ্বাসযোগ্য হয়।

প্র ০৫“রং” থেকে “ঘনত্ব”: Mantel আর Turán থেকে Szemerédi পর্যন্ত extremal ভাবনা কোথায় পৌঁছেছে?

Willem Mantel-এর প্রশ্নটি ১৯০৭ সালে একটি ডাচ গাণিতিক পত্রিকার সমস্যা হিসেবে আসে বলে উল্লেখ করা হয়। Pál Turán ১৯৪১ সালে তাঁর উপপাদ্য প্রকাশ করেন; প্রচলিত বিবরণ অনুযায়ী তিনি তখন দ্বিতীয় বিশ্বযুদ্ধের সময়ের একটি শ্রমশিবিরে ছিলেন, আর সেই কঠিন সময়ে গণিত নিয়ে ভাবতেন। (পর্ব ৬২-এর ইটভাটার প্রশ্নটিও তাঁর সেই সময়েরই আরেকটি ভাবনা।) Turán-এর উপপাদ্যকে প্রায়ই extremal graph theory-র সূচনা ধরা হয়।

দুটি ভাবনার তুলনা করুন। Ramsey-র ধাঁচ: কাঠামো রঙে ভাগ করলে কোনো একটি রঙে নকশা আছে। ঘনত্বের ধাঁচ: কাঠামোর একটি যথেষ্ট বড় অংশ নিলে সেখানেই নকশা আছে। ঘনত্বের রূপ শক্তিশালী, কারণ r রঙের একটি অন্তত 1/r অংশ নেয়। Turán বলে edge-এর ঘনত্ব (1 − 1/r)-এর বেশি হলে Kr+1 আছে; Erdős আর Stone ১৯৪৬ সালে, পরে Simonovits-এর সঙ্গে, এটিকে যেকোনো নিষিদ্ধ গ্রাফে বিস্তৃত করেন।

সংখ্যায় একই গল্প। van der Waerden রঙের কথা বলে; Erdős আর Turán ১৯৩৬ সালে অনুমান করেন যে ঘনত্বই যথেষ্ট। Klaus Roth ১৯৫৩ সালে দৈর্ঘ্য ৩-এর জন্য তা প্রমাণ করেন, আর Endre Szemerédi ১৯৭৫ সালে সব দৈর্ঘ্যের জন্য। তাঁর প্রমাণের একটি হাতিয়ার, regularity lemma, যেকোনো বড় গ্রাফকে প্রায়-এলোমেলো টুকরোয় ভাগ করে, আর এটি পরে কম্পিউটার বিজ্ঞানের property testing-এ (বিশাল গ্রাফের কয়েকটি নমুনা দেখে বৈশিষ্ট্য অনুমান) কাজে লেগেছে বলে বর্ণিত। ২০০৪ সালে Ben Green আর Terence Tao দেখান মৌলিক সংখ্যায় যেকোনো দৈর্ঘ্যের সমান্তর ধারা আছে, যদিও মৌলিক সংখ্যার ঘনত্ব শূন্য।

বাজারঘরের দৃষ্টিতে extremal প্রশ্নগুলো নকশার সীমা: নিরাপত্তা-নিয়ম মেনে কত রুট, নিয়ম মেনে কত কম্বো। Mantel বলে নিয়ম মানলে সেরা নকশাটি দুই দলের, আর ঘনত্বের উপপাদ্য বলে নিয়ম ভাঙার আগে কতটা জায়গা আছে।

মূল উপলব্ধি: Mantel আর Turán দেখান ঘনত্ব একটি সীমা পেরোলে নকশা অনিবার্য; এই “ঘনত্ব থেকে কাঠামো” ভাবনা Szemerédi আর Green–Tao পর্যন্ত গিয়ে আধুনিক combinatorics আর সংখ্যাতত্ত্বকে যুক্ত করেছে।

অনুশীলন

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

  1. প্রমাণ: প্রমাণ করুন R(3, 3, 3) ≤ 17, অর্থাৎ K17-এর edge তিন রঙে যেভাবেই রাঙানো হোক, একটি একরঙা ত্রিভুজ থাকবে।
    1. একটি vertex v নিন; তার ১৬টি edge, তিন রং। ⌈16/3⌉ = 6, তাই অন্তত ৬টি একই রঙের, ধরি লাল; সেই প্রতিবেশীরা সেট A, |A| ≥ 6. — generalized pigeonhole
    2. A-র ভেতরে কোনো লাল edge xy থাকলে v, x, y একটি লাল ত্রিভুজ। — ক্ষেত্র ১
    3. নইলে A-র ভেতরের সব edge নীল বা সবুজ, অর্থাৎ অন্তত K6-এর একটি দুই-রং। R(3, 3) = 6 অনুযায়ী সেখানে একরঙা ত্রিভুজ আছে। ∎ — ক্ষেত্র ২

    সত্য মানও 17 (Greenwood ও Gleason, ১৯৫৫); তাই Schur-এর প্রমাণে r = 3-এ 1..16 নিশ্চিত, যদিও সূক্ষ্ম মান S(3) = 13 অনুযায়ী 1..14-ই যথেষ্ট।

  2. গণনা: (ক) ১১টি vertex-এর triangle-free গ্রাফে সর্বোচ্চ edge. (খ) T(12, 3)-এর edge-সংখ্যা। (গ) P([5])-এ maximal chain কয়টি, আর একটি দুই-উপাদানের সেট কয়টিতে আছে? (ঘ) P([7])-এর বৃহত্তম antichain-এর আকার।

    (ক) ⌊121/4⌋ = 30, K5,6. (খ) দল 4, 4, 4: (144 − 48)/2 = 48, আর (1 − 1/3) · 144/2 = 48, এখানে সমতা কারণ দল সমান। (গ) 5! = 120টি chain; দুই-উপাদানের সেট 2! · 3! = 12টিতে, অর্থাৎ 120/C(5, 2) = 12. (ঘ) C(7, 3) = C(7, 4) = 35; বিজোড় n-এ দুটি মাঝের স্তরই সর্বোচ্চ। সব সংখ্যা scratch-এ মেলানো।

  3. আউটপুট অনুমান: কোড না চালিয়ে বলুন কী ছাপা হবে, আর প্রতিটি লাইন Ramsey-র কোন তথ্যের সঙ্গে মেলে তা ব্যাখ্যা করুন। তারপর যেকোনো Python-এ চালিয়ে মেলান।
    from itertools import combinations
    for n in (5, 6):
        red = {(i, j) for i, j in combinations(range(n), 2)
               if (j - i) % n in (1, n - 1)}
        mono = [t for t in combinations(range(n), 3)
                if len({p in red for p in combinations(t, 2)}) == 1]
        print(n, len(red), mono)
    5 5 []
    6 6 [(0, 2, 4), (1, 3, 5)]

    লাল edge হলো বৃত্তে পাশাপাশি জোড়া, অর্থাৎ n-ভুজের বাহু: n = 5-এ ৫টি, n = 6-এ ৬টি। একটি ত্রিভুজের তিন edge-এর রঙের সেট আকারে 1 হলে সেটি একরঙা। n = 5-এ পঞ্চভুজ-তারকা রং, কোনো একরঙা ত্রিভুজ নেই, তাই R(3, 3) > 5. n = 6-এ ষড়ভুজের বাহু লাল হলে প্রতি দ্বিতীয় vertex, 0, 2, 4 আর 1, 3, 5, নীল ত্রিভুজ বানায়; R(3, 3) = 6 অনুযায়ী এমন কিছু থাকতেই হতো (CPython 3.14-এ চালিয়ে মেলানো)।

  4. প্রমাণের ভুল ধরুন: দাবি: “R(4, 5) = 32.” যুক্তি: “উপপাদ্য ২.১ অনুযায়ী R(4, 5) ≤ R(3, 5) + R(4, 4) = 14 + 18 = 32. আর R(3, 5) = R(2, 5) + R(3, 4) আর R(4, 4) = R(3, 4) + R(4, 3) সমতায় সত্য, তাই এই সূত্র সবসময় সমতা দেয়। ∎” ভুল কোথায়?
    • ভুল ধাপ: দুটি উদাহরণে সমতা দেখে “সবসময় সমতা” সিদ্ধান্ত নেওয়া; এটি কয়েকটি ক্ষেত্র থেকে সাধারণীকরণ, প্রমাণ নয়। উপপাদ্য ২.১ শুধু ≤ বলে।
    • পাল্টা-উদাহরণ: R(3, 4)-এ সূত্র দেয় R(2, 4) + R(3, 3) = 10, অথচ সত্য মান 9 (§২–৩, parity আর Wagner রঙে প্রমাণিত)। তাই সমতা সবসময় হয় না।
    • সঠিক কথা: R(4, 5) ≤ 32 সত্য, কিন্তু McKay আর Radziszowski-এর ১৯৯৫ সালের কম্পিউটার-সহায়িত প্রমাণে সত্য মান 25. সমান দেখাতে হলে K31-এর একটি ভালো রং লাগত, যা নেই।

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

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

ক্রম“R(s, t) ≤ R(s − 1, t) + R(s, t − 1)”, এই প্রমাণের ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)

  1. N = R(s − 1, t) + R(s, t − 1) নিয়ে KN-এর যেকোনো লাল-নীল রং ধরা
  2. একটি vertex v বেছে তার প্রতিবেশীদের লাল সেট A আর নীল সেট B-তে ভাগ করা
  3. |A| + |B| = N − 1 থেকে |A| ≥ R(s − 1, t) বা |B| ≥ R(s, t − 1)
  4. প্রথম ক্ষেত্রে A-র ভেতরে লাল Ks−1 বা নীল Kt পাওয়া
  5. লাল Ks−1-এর সঙ্গে v যোগ করে লাল Ks; দ্বিতীয় ক্ষেত্র প্রতিসমভাবে

K8-এর edge লাল-নীল রঙে এমনভাবে রাঙানো যায় যাতে লাল ত্রিভুজ নেই আর নীল K4 নেই, কিন্তু K9-এ তা অসম্ভব। R(3, 4) কত?

  • 8
  • 10
  • 9
  • 6

R(s, t) ≤ C(s + t − 2, s − 1) সীমা ব্যবহার করলে R(4, 4)-এর ওপরের সীমা কত আসে?

  • 18
  • 20
  • 70
  • 64

৯টি vertex-এর একটি simple graph-এ কোনো ত্রিভুজ নেই। এর সর্বোচ্চ সম্ভাব্য edge-সংখ্যা কত?

  • 36
  • 21
  • 18
  • 20

{1, 2, 3, 4, 5}-এর subset-এর একটি পরিবারে কোনো সেট আরেকটির ভেতরে নেই। পরিবারে সর্বোচ্চ কয়টি সেট থাকতে পারে?

  • 10
  • 32
  • 5
  • 20

W(2, 3) = 9 বলতে কী বোঝায়?

  • 1..9-এর যেকোনো দুই-রঙে একরঙা x + y = z আছে, আর 9 এমন সবচেয়ে ছোট সংখ্যা
  • 1..9-এ দৈর্ঘ্য ৩-এর সমান্তর ধারা ঠিক ৯টি
  • 1..9-এর যেকোনো দুই-রঙে একরঙা ৩-পদের সমান্তর ধারা আছে, আর 9 এমন সবচেয়ে ছোট সংখ্যা
  • ৯ রঙে রাঙালে দৈর্ঘ্য ২-এর ধারা আছে

R(s − 1, t) = a আর R(s, t − 1) = b দুটিই জোড় সংখ্যা। R(s, t) সম্পর্কে কোন দাবিটি প্রমাণিত?

  • R(s, t) ≤ a + b, এর বেশি কিছু নয়
  • R(s, t) ≤ a + b − 1
  • R(s, t) = a + b − 1
  • R(s, t) ≤ a · b − 1

শব্দকোষ

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

মনে রাখুন

  1. Ramsey number: R(s, t) = সবচেয়ে ছোট N, যাতে KN-এর প্রতিটি লাল-নীল রঙে লাল Ks বা নীল Kt; ওপরের সীমায় সব রং, নিচের সীমায় একটি রং।
  2. সীমা: R(s, t) ≤ R(s − 1, t) + R(s, t − 1) ≤ C(s + t − 2, s − 1); দুটিই জোড় হলে এক কম; নিচে 2k/2 < R(k, k).
  3. মান: R(3, 3) = 6, R(3, 4) = 9, R(3, 5) = 14, R(4, 4) = 18, আর 43 ≤ R(5, 5) ≤ 46.
  4. সংখ্যায়: Schur (x + y = z, প্রমাণ পার্থক্যে রং করে Ramsey), S(2) = 4; van der Waerden, W(2, 3) = 9.
  5. Extremal: Mantel m ≤ ⌊n²/4⌋, Turán m ≤ (1 − 1/r)n²/2, Sperner |F| ≤ C(n, ⌊n/2⌋) LYM-এর chain গণনায়।

পরের পর্বে: পর্ব ৭৭ “SAT আর SMT solver — discrete math দিয়ে software যাচাই”: সমস্যাকে CNF-এ লেখা, DPLL আর clause learning, 2-SAT, আর SMT solver দিয়ে ছোট প্রোগ্রামের ধর্ম প্রমাণ, যা এই পর্বের Schur আর van der Waerden সংখ্যার কম্পিউটার-প্রমাণের পেছনের হাতিয়ার।

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

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