बाज़ार से आई एक टोकरी
अमारा और उसके दादाजी बाज़ार से एक बड़ी टोकरी लेकर घर लौटे हैं। उसमें केले और नींबू हैं, सेब और स्ट्रॉबेरी हैं, और एक खीरा, एक नाशपाती, एक संतरा और एक गाजर है।
“चलो, सब कुछ जगह पर रख देते हैं,” दादाजी कहते हैं। “पर हर चीज़ कहाँ जाएगी?”
सामान सँभालने के लिए अमारा को एक नियम चाहिए — यह तय करने का एक तरीका कि हर चीज़ कहाँ जाती है। गणितज्ञ यह काम हमेशा करते हैं। वे चीज़ों को संग्रहों में इकट्ठा करते हैं।
टोकरी छाँटें
खुद टोकरी छाँटकर देखिए। पहले रंग के अनुसार छाँटें। फिर दोबारा शुरू करें और आकार के अनुसार छाँटें।
बाज़ार का छँटाई खेल
टोकरी से कोई चीज़ चुनें, फिर वह डिब्बा चुनें जिसमें वह जाती है।
टोकरी
टोकरी से कोई चीज़ चुनें।
क्या आपने नीली चीज़ों वाला डिब्बा देखा? उसमें कुछ भी नहीं गया। क्या वह फिर भी एक संग्रह है? जानने के लिए आगे पढ़ते रहिए!
बड़े विचार
परिभाषा— संग्रह
संग्रह उन चीज़ों को कहते हैं जिनके बारे में हम एक साथ सोचते हैं। किसी संग्रह में शामिल चीज़ें उसके सदस्य कहलाती हैं।
जब कोई चीज़ किसी संग्रह में होती है, तो हम कहते हैं कि वह उस संग्रह की सदस्य है (या उस संग्रह से संबंधित है)। केला पीली चीज़ों के संग्रह का सदस्य है। सेब नहीं है।
परिभाषा— एक ही संग्रह
दो संग्रह एक ही होते हैं जब उनमें ठीक-ठीक वही सदस्य हों। सदस्य किस क्रम में हैं, इससे कोई फ़र्क नहीं पड़ता।
परिभाषा— रिक्त संग्रह
जिस संग्रह में एक भी सदस्य नहीं होता, उसे रिक्त संग्रह (खाली संग्रह) कहते हैं। नीली चीज़ों वाला डिब्बा खाली है — पर वह फिर भी एक संग्रह है!
आइए साथ मिलकर अभ्यास करें
उदाहरण— क्या यह सदस्य है?
यह रहा एक संग्रह: 🍎 🍌 🍐।
- क्या 🍌 सदस्य है? हाँ — वह वहीं है।
- क्या 🍋 सदस्य है? नहीं — ध्यान से देखिए। वहाँ कोई नींबू नहीं है।
उदाहरण— एक ही, या अलग-अलग?
केंजी के डिब्बे में 🍎 और 🍌 हैं। लूसिया के डिब्बे में 🍌 और 🍎 हैं।
उनके सदस्य वही हैं, बस क्रम अलग है। इसलिए वे एक ही संग्रह हैं।
उदाहरण— कितने हैं?
संग्रह 🍊 🍋 🍎 🍓 को गिनिए। हर एक को एक बार छुएँ और एक संख्या बोलें: एक, दो, तीन, चार। इसमें 4 सदस्य हैं।
अब स्ट्रॉबेरी से शुरू करके गिनिए। फिर भी 4 ही आते हैं!
गिनने पर हमेशा एक ही उत्तर क्यों आता है
जब हम गिनते हैं, तो हर चीज़ को ठीक एक गिनती-शब्द से मिलाते हैं: एक, दो, तीन, चार। हर चीज़ को एक शब्द मिलता है, और कोई भी शब्द दो बार काम में नहीं आता।
अगर आप कहीं और से शुरू करें, तो मिलान अलग बनता है — पर गिनती के शब्द उतने ही लगते हैं, क्योंकि चीज़ें ठीक उतनी ही हैं जितनी पहले थीं। न कुछ जोड़ा गया, न कुछ निकाला गया।
बड़ों के लिए · यह विचार आगे चलकर क्या बनता है
“गिनना मिलान करना है” — यह विचार गणित के एक गहरे विचार का बीज है: दो संग्रहों में सदस्यों की संख्या ठीक तब बराबर होती है जब उनके सदस्यों की एक-एक करके जोड़ियाँ बनाई जा सकें (एकैकी संगतता)। बहुत आगे चलकर, जोड़ियाँ बनाने का यही विचार गणितज्ञों को अनंत संग्रहों के आकारों की तुलना करने देता है।
Gideon का हाँ-या-नहीं खेल
Gideon को ऐसे कथन पसंद हैं जो साफ़ तौर पर सत्य हों या साफ़ तौर पर असत्य। पीली चीज़ों के संग्रह को देखिए: 🍌 🍋। हर कथन सत्य है या असत्य?
- “केला पीले संग्रह का सदस्य है।” — सत्य।
- “पीले संग्रह का हर सदस्य लंबा है।” — असत्य! नींबू गोल है। नियम तोड़ने वाला एक उदाहरण ही यह दिखाने के लिए काफ़ी है कि कथन असत्य है।
- “नीले संग्रह का कोई सदस्य है।” — असत्य। नीला संग्रह रिक्त है।
बड़ों के लिए · यही विचार Lean में, जो उपपत्तियाँ जाँचता है
Lean जैसे कंप्यूटर उपपत्ति-सहायक ऐसे कथनों की जाँच कर सकते हैं। नीचे, एक टोकरी को Lean की सूची (list) के रूप में लिखा गया है। Lean जाँचता है कि आम टोकरी का सदस्य है, कि टोकरी में 3 सदस्य हैं, और कि खाली सूची का कोई सदस्य नहीं है।
/-- There is a mango in the basket: it is the very first thing in the list. -/
theorem mango_in_basket : "mango" ∈ basket :=
List.Mem.head ["orange", "banana"]/-- The basket holds three pieces of fruit. Lean counts them itself, so `rfl` is enough. -/
theorem basket_count : basket.length = 3 := rfl/-- The empty list has no members at all. -/
theorem nothing_in_empty : ∀ x : String, x ∉ ([] : List String) := by
intro x h
-- A proof of `x ∈ []` would have to come from one of the ways of building membership,
-- but none of them produces an empty list, so there is no case left to consider.
cases hसूचियाँ क्रम याद रखती हैं, इसलिए Lean कहता है कि सूची [1, 2] सूची [2, 1] से अलग है — जबकि उनके सदस्य बिल्कुल वही हैं। जो संग्रह क्रम भूल जाता है, उसे गणितज्ञ समुच्चय कहते हैं, और यही अगले पाठ का विषय है।
/-- For lists, order matters: `[1, 2]` and `[2, 1]` are different lists.
`decide` asks Lean to compare the two lists element by element. -/
theorem order_matters_for_lists : ([1, 2] : List Nat) ≠ [2, 1] := by decide/-- …but `[1, 2]` and `[2, 1]` have exactly the same members. As *sets* they would be equal;
as *lists* they are not (see `order_matters_for_lists`). -/
theorem same_members : ∀ x : Nat, x ∈ [1, 2] ↔ x ∈ [2, 1] := by
intro x
-- Being in a list means being equal to one of its entries:
-- `x ∈ [1, 2]` unfolds to `x = 1 ∨ x = 2`, and `x ∈ [2, 1]` to `x = 2 ∨ x = 1`.
simp only [List.mem_cons, List.not_mem_nil, or_false]
-- "or" does not care about order.
exact Or.commMargaret बाज़ार की टोकरी गिनती है
बड़ों के लिए · Margaret का प्रोग्राम
यह Python प्रोग्राम बाज़ार की एक टोकरी को प्रकार और रंग के अनुसार छाँटता है, और हर ढेर को गिनता है। इसे अपने ब्राउज़र में आज़माने के लिए चलाएँ दबाएँ। यह 6 चीज़ों वाली टोकरी के सभी 720 क्रम भी आज़माता है। इससे केवल इसी टोकरी की जाँच होती है; ऊपर दी गई व्याख्या बताती है कि यह हर टोकरी के लिए क्यों सही है।
"""Sorting and counting a market basket.
A *collection* here is a basket of items. Two mangoes are two different items
that happen to share a name, so the basket is a list (order and repeats are
recorded), not a set. We sort the basket by a property, count each group, and
check that the counts do not depend on the order in which the items were
picked.
Runs unchanged in the browser (Pyodide) using only the standard library.
"""
from collections import Counter
from itertools import permutations
from math import factorial
import textwrap
#: The basket, in the order the items were picked. Each item is
#: (name, kind, colour). Repeated names are separate items.
BASKET = (
("mango", "fruit", "yellow"),
("okra", "vegetable", "green"),
("banana", "fruit", "yellow"),
("lime", "fruit", "green"),
("carrot", "vegetable", "orange"),
("mango", "fruit", "yellow"),
("aubergine", "vegetable", "purple"),
("orange", "fruit", "orange"),
("lime", "fruit", "green"),
("yam", "vegetable", "brown"),
)
#: Positions of each property inside an item tuple.
PROPERTIES = {"name": 0, "kind": 1, "colour": 2}
def value(item, prop):
"""Return the value of property ``prop`` ("name", "kind" or "colour") of an item."""
try:
return item[PROPERTIES[prop]]
except KeyError:
raise ValueError(f"unknown property {prop!r}; expected one of {sorted(PROPERTIES)}") from None
def sort_by(items, *props):
"""Return a new list of the items sorted by the given properties, in priority order.
The original collection is not changed. With no properties, items are sorted
by (name, kind, colour) as plain tuples.
"""
if not props:
return sorted(items)
return sorted(items, key=lambda item: tuple(value(item, p) for p in props))
def group_by(items, prop):
"""Group items by a property: return {value: [items with that value]} with keys sorted."""
groups = {}
for item in items:
groups.setdefault(value(item, prop), []).append(item)
return {key: groups[key] for key in sorted(groups)}
def count_by(items, prop):
"""Count how many items have each value of ``prop``: {value: count}, keys sorted."""
counts = Counter(value(item, prop) for item in items)
return {key: counts[key] for key in sorted(counts)}
def distinct_values(items, prop):
"""Return the set of different values of ``prop`` that occur in the collection."""
return {value(item, prop) for item in items}
def counts_same_in_every_order(items, prop):
"""Check every ordering of ``items``: do the group counts by ``prop`` ever change?
Returns ``(orders_checked, all_same)``. The number of orders is n!, so this
is only practical for small collections (n <= 8 or so).
"""
items = list(items)
reference = count_by(items, prop)
checked = 0
for order in permutations(items):
checked += 1
if count_by(order, prop) != reference:
return checked, False
return checked, True
def format_counts(counts):
"""Format {value: count} as 'a 2, b 3' with the total in brackets."""
parts = ", ".join(f"{key} {n}" for key, n in counts.items())
return f"{parts} (total {sum(counts.values())})"
def main():
basket = list(BASKET)
print(f"A market basket of {len(basket)} items, in the order they were picked:")
print(" " + ", ".join(value(item, "name") for item in basket))
print()
print("Sorted by kind, then colour, then name:")
print(f" {'kind':<10} {'colour':<8} name")
for item in sort_by(basket, "kind", "colour", "name"):
print(f" {value(item, 'kind'):<10} {value(item, 'colour'):<8} {value(item, 'name')}")
print()
by_kind = count_by(basket, "kind")
by_colour = count_by(basket, "colour")
print("Counts by kind: " + format_counts(by_kind))
print("Counts by colour: " + format_counts(by_colour))
sums = " + ".join(str(n) for n in by_kind.values())
print(f"Every item lands in exactly one group, so the groups add up: {sums} = {len(basket)}.")
names = distinct_values(basket, "name")
print(f"Different names: {len(names)} (two mangoes are two items with one name).")
print()
small = basket[:6]
n_orders = factorial(len(small))
print(f"Does order matter? Take the first {len(small)} items and try all {len(small)}! = {n_orders} orders:")
for prop in ("kind", "colour"):
checked, same = counts_same_in_every_order(small, prop)
print(f" counts by {prop:<6} identical in all {checked} orders: {same}")
print()
print(textwrap.fill(
"Epistemic status: the counts above are exact, and all "
f"{n_orders} orders of the 6-item basket were checked, which proves "
"order-independence for that basket only. Why it holds for every finite "
"collection (counting pairs items with 1, 2, 3, ...) is explained in the "
"lesson, not by this program.",
width=78,
))
if __name__ == "__main__":
main()अब आपकी बारी
आराम से कीजिए। आप जब चाहें, संकेत माँग सकते हैं।
1. संग्रह
आरंभिकमानवीययह रहा एक संग्रह: 🍎 🍌 🍐। इनमें से कौन इस संग्रह का सदस्य है?
2. संग्रह
आरंभिकमानवीयइस संग्रह में कितने सदस्य हैं? 🍊 🥕 🍋 🍎 🍐
3. संग्रह
मुख्यमानवीयकेंजी के डिब्बे में 🍎 🍌 🍐 हैं। लूसिया के डिब्बे में 🍐 🍎 🍌 हैं। क्या वे एक ही संग्रह हैं?
4. संग्रह
मुख्यमानवीयनीले फलों वाला डिब्बा खाली है। रिक्त संग्रह में कितने सदस्य होते हैं?
5. संग्रह
मुख्यऔपचारिकGideon का खेल: संग्रह है 🍌 🍋 🥒। यह कथन सत्य है या असत्य? “इस संग्रह का हर सदस्य पीला है।”
6. संग्रह
चुनौतीमानवीयबड़े बच्चों के लिए: सेब (apple), केला (banana), स्ट्रॉबेरी (strawberry) और नींबू (lemon) में से लाल चीज़ों का संग्रह लिखिए। कोड के रूप में दिखाए गए अंग्रेज़ी शब्द लिखें, अल्पविराम से अलग करके, जैसे {kiwi, plum}।
जिन बातों में लोग अक्सर उलझते हैं
भ्रांति
“खाली डिब्बा संग्रह नहीं होता।” होता है! रिक्त संग्रह एक सच्चा संग्रह है — बस उसमें कोई सदस्य नहीं है। गणितज्ञ इसे बहुत उपयोगी पाते हैं।
भ्रांति
“अगर मैं चीज़ों को इधर-उधर कर दूँ, तो संग्रह बदल जाता है।” सदस्यों को इधर-उधर करने से क्रम बदलता है, संग्रह नहीं। वही सदस्य, तो वही संग्रह।
भ्रांति
“बड़ी चीज़ें ज़्यादा गिनी जाती हैं।” एक बड़ा नारियल और एक छोटी स्ट्रॉबेरी, दोनों एक-एक सदस्य ही गिने जाते हैं।
और विस्मय की ओर
क्या आप एक डिब्बे के अंदर दूसरा डिब्बा रख सकते हैं? जिस डिब्बे में केवल एक खाली डिब्बा हो, उसके अंदर क्या है? अगर आप उत्सुक हैं तो यह पथ अपनाइए — यह पूरी तरह वैकल्पिक है।
विस्मय पथ · वैकल्पिक · कभी अंक नहीं दिए जातेBoxes inside boxesWhat is inside a box that contains only an empty box? Is it empty? And can every description you can think of make a collection?पथ पर चलेंसंग्रह हमें कहाँ ले जाते हैं
अगले पाठ में संग्रहों को बड़ों वाला एक नाम मिलता है: समुच्चय। गणितज्ञ समुच्चय को मझले कोष्ठकों में लिखते हैं, जैसे , और रिक्त समुच्चय को लिखते हैं।
“दो संग्रह एक ही होते हैं जब उनके सदस्य ठीक वही हों” — यह नियम समुच्चयों के सबसे महत्वपूर्ण नियमों में से एक है। इसे विस्तारता का सिद्धांत कहते हैं।
बड़ों के लिए · छाँटने के नियम फलन होते हैं
छाँटने का ऐसा नियम, जो हर चीज़ को ठीक एक डिब्बे में भेजता है, फलन का एक उदाहरण है — जो पाठ 4 का विषय है। फलन, और उनके संयोजन के तरीके, आगे चलकर संवर्ग सिद्धांत तक ले जाते हैं। छोटे शिक्षार्थियों को इनमें से किसी शब्द की ज़रूरत नहीं; छाँटना ही काफ़ी है।
बहुत पहले, दुनिया भर में गिनती
लोग बहुत लंबे समय से संग्रहों को गिनते आ रहे हैं।
- दक्षिणी अफ़्रीका में बबून की एक हड्डी, जिस पर खाँचे काटे गए हैं — लेबॉम्बो हड्डी — चालीस हज़ार वर्ष से भी अधिक पुरानी है। कुछ शोधकर्ता मानते हैं कि ये खाँचे गिनती के निशान थे, हालाँकि यह कोई निश्चित रूप से नहीं जानता।
- दक्षिण अमेरिका के एंडीज़ पर्वतों में इंका अभिलेख-रक्षक खिपु का उपयोग करते थे: गाँठों वाली डोरियाँ, जिनसे वे लोगों, पशुओं और सामान की संख्याएँ दर्ज करते थे।
- बहुत-सी संस्कृतियाँ हाथ-पैर की उँगलियों, कंकड़ों और गाँठों से गिनती करती थीं। अंग्रेज़ी शब्द calculate (गणना करना) लैटिन भाषा के उस शब्द से बना है जिसका अर्थ है छोटा कंकड़।
बड़ों के लिए: आगे पढ़ने के लिए
- Paul R. Halmos, Naive Set Theory (1960) — वयस्कों के लिए समुच्चयों का एक क्लासिक, पठनीय परिचय (अंग्रेज़ी में)।
- छोटे बच्चों के लिए छाँटने और गिनने से जुड़ी गतिविधियाँ कई निःशुल्क शैक्षिक वेबसाइटों पर मिलती हैं, जैसे NRICH का शुरुआती वर्षों वाला खंड (nrich.maths.org, अंग्रेज़ी में)।
वैकल्पिक ईसाई चिंतन · हर एक मायने रखता है
ईसाई परंपरा से एक चिंतन, जो The Lumenary की प्रेरणा है। यह गणित का हिस्सा नहीं है, और आप इसे बेझिझक छोड़ सकते हैं।
यीशु के एक दृष्टांत में एक चरवाहे के पास सौ भेड़ें हैं। जब उनमें से एक भटक जाती है, तो उसे पता चल जाता है — क्योंकि वह अपने झुंड को एक-एक करके पहचानता है — और वह उसे ढूँढ़ने निकल पड़ता है (लूका 15:3–7)। उस कहानी में गिनना देखभाल का एक रूप है: संग्रह का हर सदस्य मायने रखता है। गणित भी ध्यान देने की यही आदत सिखाता है, और हर शिक्षार्थी, हर जगह, मायने रखता है।