การสร้างฟังก์ชั่นมีประโยชน์เมื่อคุณกำลังออกแบบอัลกอริทึมการนับ นั่นคือไม่เพียง แต่เมื่อคุณกำลังมองหาจำนวนวัตถุที่มีคุณสมบัติบางอย่าง แต่ยังเมื่อคุณกำลังมองหาวิธีที่จะระบุวัตถุเหล่านี้ (และบางทีอาจจะสร้างอัลกอริทึมในการนับวัตถุ) มีการนำเสนอที่ดีมากในบทที่ 7 คือคณิตศาสตร์คอนกรีตโดยโรนัลด์เกรแฮม, โดนัลด์ Knuth และโอเรนพาทาชนิก ตัวอย่างด้านล่างมาจากหนังสือเหล่านี้ (ความผิดพลาดและการขาดความชัดเจนเป็นของฉัน)
สมมติว่าคุณกำลังมองหาวิธีที่จะเปลี่ยนแปลงด้วยชุดเหรียญที่กำหนด ตัวอย่างเช่นกับที่พบบ่อยdenominations¹สหรัฐเหรียญที่เป็นไปได้[100] เพื่อให้การเปลี่ยนแปลง¢ 42 มีความเป็นไปได้หนึ่งอย่างคือ ; ความเป็นไปได้อีกอย่างก็คือ[1] เราจะเขียน\ โดยทั่วไปเราสามารถเขียนฟังก์ชันการสร้างสำหรับวิธีทั้งหมดเพื่อให้การเปลี่ยนแปลง:
ในคำศัพท์ทางเทคนิคเพิ่มเติมคือคำศัพท์ในช่องว่างของอนุกรมพลังงานในห้าตัวแปร[ 25 ] [ 10 ] [ 5 ] [ 1 ] [ 1 ] [ 10 ] [ 10 ] [ 10 ] [ 10 ] [ 1 ] [ 1 ] 42 ⟨ [ 25 ] [ 10 ][1],[5],[10],[25],[100][25][10][5][1][1][10][10][10][10][1][1]H = ∑ h ≥ 0 ∑ q ≥ 0 ∑ d ≥ 0 ∑ n ≥ 0 ∑ p ≥ 0 [ 100 ] h [ 25 ] q [ 10 ] d [ 5 ] n [ 1 ] หน้า42 ⟨ [ 25 ] [ 10 ] [ 5 ] [ 1 ]2⟩ = ⟨ [ 10 ]4[ 1 ]2⟩
H= ∑h ≥ 0ΣQ≥ 0Σd≥ 0Σn ≥ 0Σp ≥ 0[ 100 ]ชั่วโมง[ 25 ]Q[ 10 ]d[ 5 ]n[ 1 ]พี
[ 100 ] , [ 25 ] , [ 10 ] , [ 5 ] , [ 1 ] ⟨ [ 100 ] h [ 25 ] q [ 10 ] d [ 5 ] n [ 1 ] p ⟩ = 100 h + 25 q + 10 d + 5 n + p v v H PH[ 100 ] , [ 25 ] , [ 10 ] , [ 5 ] , [ 1 ]. กำหนดการประเมินค่า monomial ในพื้นที่นี้โดย
แล้ววิธีการที่จะให้เซนต์ในการเปลี่ยนแปลงจำนวนของ monomials ที่มีการประเมินมูลค่าเป็นวีเราสามารถแสดงในรูปแบบที่เพิ่มขึ้นโดยการเขียนวิธีการที่เพื่อให้การเปลี่ยนแปลงใน pennies เท่านั้นแล้ววิธีที่เพื่อให้การเปลี่ยนแปลงใน pennies และ nickels และอื่น ๆ (หมายถึงไม่มีเหรียญ)
⟨ [ 100 ]ชั่วโมง[ 25 ]Q[ 10 ]d[ 5 ]n[ 1 ]พี⟩ = 100 h + 25 q+ 10 d+ 5 n + p
โวลต์โวลต์HPI P = I + [ 1 ] + [ 1 ] 2 + [ 1 ] 3 + … = Iยังไม่มีข้อความผม S:P= ฉัน+ [ 1 ] + [ 1 ]2+ [ 1 ]3+ … = ฉันผม- [ 1 ]ยังไม่มีข้อความ= ( I+ [ 5 ] + [ 5 ]2+ [ 5 ]3+ ... ) P= Pผม- [ 5 ]D = ( I+ [ 10 ] + [ 10 ]2+ [ 10 ]3+ ... ) N= Nผม- [ 10 ]Q = ( I+ [ 25 ] + [ 25 ]2+ [ 25 ]3+ … ) D = Dผม- [ 25 ]H=( I+ [ 100 ] + [ 100 ]2+ [ 100 ]3+ … ) Q = Qผม- [ 100 ]
หากคุณต้องการนับและไม่เพียงแค่ระบุวิธีที่จะเปลี่ยนแปลงแล้วมีวิธีง่ายๆในการใช้ซีรีย์ทางการที่เราได้รับมา ใช้โฮโมมอร์ฟิซึม
ค่าสัมประสิทธิ์ของในคือจำนวนวิธีที่จะเปลี่ยน cents
X v S ( C ) vS:[ 1 ] ↦ X,[ 5 ] ↦ X5,[ 10 ] ↦ X10, [ 25 ] ↦ X25, [ 100 ] ↦ X100
Xโวลต์S( C)โวลต์
ตัวอย่างที่ยากกว่า: สมมติว่าคุณต้องการศึกษาทุกวิธีในการเรียงไพ่สี่เหลี่ยมด้วยแต้ม 2 × 1 ตัวอย่างเช่นมีสองวิธีในการเรียงสี่เหลี่ยมผืนผ้า 2 × 2 สี่เหลี่ยมผืนผ้าไม่ว่าจะเป็นโดมิโนแนวนอนสองแบบหรือโดมิโนแนวตั้งสองแบบ การนับจำนวนวิธีในการเรียงสี่เหลี่ยมสี่เหลี่ยมผืนผ้าค่อนข้างง่าย แต่กรณีจะกลายเป็นไม่เด่นชัดอย่างรวดเร็ว เราสามารถแจกแจงความเป็นไปได้ทั้งหมดของแถบแนวนอนที่มีความสูง 3 โดยผสานแต้มเข้าด้วยกันซึ่งให้รูปแบบซ้ำ ๆ อย่างรวดเร็ว:
3 × n { U = o + L V + แกมมา Λ + ≡ U V = ฉัน2 × n3 × noL
⎧⎩⎨⎪⎪⎪⎪⎪⎪ยู= o + L V+ แกมมา Λ + ≡ UV= ฉันยู+ =-VΛ =ผมยู+-=Λ
ที่รูปร่างตลกเป็นตัวแทนของโดมิโนจัดการเบื้องต้น:ไม่มีโดมิโนเป็นแนวดิ่งบนโดมิโนโดมิโนด้านซ้ายของแนวโดมิโนเป็นโดมิโนแนวตั้งชิดกับด้านล่างของวงดนตรีของความสูง 3,เป็นโดมิโนแนวนอนชิดกับด้านบนของวงบวกสองแต้มแนวนอนด้านล่างและขั้นตอนหนึ่งไปทางขวา, เป็นต้นที่นี่การคูณหมายถึงการต่อเรียงแนวนอนและไม่ใช่การสลับสับเปลี่ยน แต่มีสมการระหว่างรูปแบบพื้นฐานที่เป็นตัวแปรในชุดพลังงานนี้ เช่นเคยกับเหรียญเราสามารถแทนที่สำหรับโดมิโนทุกตัวและรับซีรีย์การสร้างสำหรับจำนวนการเอียงของ
โอLผม-=X3 × ( 2 n / 3 )สี่เหลี่ยมผืนผ้า (เช่นสัมประสิทธิ์คือจำนวนวิธีที่จะเรียงต่อกันสี่เหลี่ยมของพื้นที่ซึ่งประกอบด้วยโดมิโนและมีความกว้าง ) ซีรีย์นี้ยังสามารถใช้งานได้หลากหลายมากขึ้น ตัวอย่างเช่นโดยการแยกโดมิโนแนวตั้งและแนวนอนเราสามารถนับความเอียงด้วยจำนวนโดมิโนแนวตั้งและแนวนอนที่กำหนด
X3 k6 k3 k2 k
อ่านคณิตศาสตร์คอนกรีตอีกครั้งเพื่อนำเสนอที่เร่งรีบน้อยลง
¹ ฉันรู้ว่ารายชื่อของฉันไม่สมบูรณ์ สมมติให้สหรัฐฯง่ายขึ้นที่เหมาะสมสำหรับตัวอย่างทางคณิตศาสตร์
²² นอกจากนี้ถ้ามันเกิดขึ้นสมมติว่าเหรียญทรงกลม
types และเรียงพิมพ์ที่ดีขึ้น