update
This commit is contained in:
@@ -0,0 +1,380 @@
|
||||
# 📊 مثالهای عملی محاسبه تعادل - 5 لول عمقی
|
||||
|
||||
**تاریخ**: 2025-12-09
|
||||
**وضعیت**: مثالهای کامل و تایید شده
|
||||
**هدف**: نمایش محاسبات واقعی برای درخت باینری تا 5 لول
|
||||
|
||||
---
|
||||
|
||||
## 🌳 ساختار درخت نمونه
|
||||
|
||||
```
|
||||
User1 (Level 0)
|
||||
/ \
|
||||
User2 (L1-L) User3 (L1-R)
|
||||
/ \ / \
|
||||
User4(L2-LL) User5(L2-LR) User6(L2-RL) User7(L2-RR)
|
||||
/ \ / \ / \ / \
|
||||
U8(L3) U9(L3) U10(L3) U11(L3) U12(L3) U13(L3) U14(L3) U15(L3)
|
||||
/ \ / \ / \ / \ / \ / \ / \ / \
|
||||
U16-U31 (Level 4 - 16 users)
|
||||
/\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
|
||||
U32-U63 (Level 5 - 32 users)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 دادههای ورودی
|
||||
|
||||
### فرضیات:
|
||||
- **هفته فعلی**: 2025-W50
|
||||
- **سقف امتیاز**: 300
|
||||
- **تعداد کل کاربران**: 63 نفر (6 لول: 1+2+4+8+16+32)
|
||||
- **وضعیت**: همه کاربران فعال هستند (عضو باشگاه)
|
||||
|
||||
---
|
||||
|
||||
## 🎯 محاسبات Level 5 (پایینترین سطح)
|
||||
|
||||
### User 32-63 (32 کاربر Leaf):
|
||||
```
|
||||
هیچ زیرمجموعهای ندارند
|
||||
چپ = 0، راست = 0
|
||||
تعادل = MIN(0, 0) = 0
|
||||
امتیاز = 0
|
||||
باقیمانده چپ = 0
|
||||
باقیمانده راست = 0
|
||||
فلش = 0
|
||||
```
|
||||
|
||||
**خلاصه Level 5**: تمام 32 کاربر → 0 امتیاز
|
||||
|
||||
---
|
||||
|
||||
## 🎯 محاسبات Level 4 (User 16-31)
|
||||
|
||||
### User 16:
|
||||
**زیرمجموعه**:
|
||||
- چپ: User 32 (1 نفر)
|
||||
- راست: User 33 (1 نفر)
|
||||
|
||||
**محاسبات**:
|
||||
```
|
||||
چپ = 1، راست = 1
|
||||
تعادل اولیه = MIN(1, 1) = 1
|
||||
باقیمانده چپ = 1 - 1 = 0
|
||||
باقیمانده راست = 1 - 1 = 0
|
||||
امتیاز نهایی = MIN(1, 300) = 1 ✅
|
||||
فلش = 0
|
||||
```
|
||||
|
||||
### User 17:
|
||||
**زیرمجموعه**:
|
||||
- چپ: User 34 (1 نفر)
|
||||
- راست: User 35 (1 نفر)
|
||||
|
||||
**محاسبات**: مشابه User 16
|
||||
```
|
||||
امتیاز = 1 ✅
|
||||
```
|
||||
|
||||
### User 18-31 (14 کاربر دیگه):
|
||||
همه مشابه User 16 → هر کدام 1 امتیاز
|
||||
|
||||
**خلاصه Level 4**: تمام 16 کاربر → هر کدام 1 امتیاز = **16 امتیاز**
|
||||
|
||||
---
|
||||
|
||||
## 🎯 محاسبات Level 3 (User 8-15)
|
||||
|
||||
### User 8:
|
||||
**زیرمجموعه**:
|
||||
- چپ: User 16 (1 نفر)
|
||||
- راست: User 17 (1 نفر)
|
||||
|
||||
**محاسبات**:
|
||||
```
|
||||
چپ = 1، راست = 1
|
||||
تعادل = MIN(1, 1) = 1
|
||||
امتیاز = 1 ✅
|
||||
```
|
||||
|
||||
### User 9:
|
||||
**زیرمجموعه**:
|
||||
- چپ: User 18 (1 نفر)
|
||||
- راست: User 19 (1 نفر)
|
||||
|
||||
**محاسبات**: مشابه User 8
|
||||
```
|
||||
امتیاز = 1 ✅
|
||||
```
|
||||
|
||||
### User 10-15 (6 کاربر دیگه):
|
||||
همه مشابه → هر کدام 1 امتیاز
|
||||
|
||||
**خلاصه Level 3**: تمام 8 کاربر → هر کدام 1 امتیاز = **8 امتیاز**
|
||||
|
||||
---
|
||||
|
||||
## 🎯 محاسبات Level 2 (User 4-7)
|
||||
|
||||
### User 4:
|
||||
**زیرمجموعه**:
|
||||
- چپ: User 8 (1 نفر)
|
||||
- راست: User 9 (1 نفر)
|
||||
|
||||
**محاسبات**:
|
||||
```
|
||||
چپ = 1، راست = 1
|
||||
تعادل = MIN(1, 1) = 1
|
||||
امتیاز = 1 ✅
|
||||
```
|
||||
|
||||
### User 5:
|
||||
**زیرمجموعه**:
|
||||
- چپ: User 10 (1 نفر)
|
||||
- راست: User 11 (1 نفر)
|
||||
|
||||
**محاسبات**: مشابه User 4
|
||||
```
|
||||
امتیاز = 1 ✅
|
||||
```
|
||||
|
||||
### User 6, 7:
|
||||
همه مشابه → هر کدام 1 امتیاز
|
||||
|
||||
**خلاصه Level 2**: تمام 4 کاربر → هر کدام 1 امتیاز = **4 امتیاز**
|
||||
|
||||
---
|
||||
|
||||
## 🎯 محاسبات Level 1 (User 2-3)
|
||||
|
||||
### User 2:
|
||||
**زیرمجموعه**:
|
||||
- چپ: User 4 (1 نفر)
|
||||
- راست: User 5 (1 نفر)
|
||||
|
||||
**محاسبات**:
|
||||
```
|
||||
چپ = 1، راست = 1
|
||||
تعادل = MIN(1, 1) = 1
|
||||
امتیاز = 1 ✅
|
||||
```
|
||||
|
||||
### User 3:
|
||||
**زیرمجموعه**:
|
||||
- چپ: User 6 (1 نفر)
|
||||
- راست: User 7 (1 نفر)
|
||||
|
||||
**محاسبات**: مشابه User 2
|
||||
```
|
||||
امتیاز = 1 ✅
|
||||
```
|
||||
|
||||
**خلاصه Level 1**: تمام 2 کاربر → هر کدام 1 امتیاز = **2 امتیاز**
|
||||
|
||||
---
|
||||
|
||||
## 🎯 محاسبات Level 0 (User 1 - Root)
|
||||
|
||||
### User 1:
|
||||
**زیرمجموعه**:
|
||||
- چپ: User 2 (1 نفر)
|
||||
- راست: User 3 (1 نفر)
|
||||
|
||||
**محاسبات**:
|
||||
```
|
||||
چپ = 1، راست = 1
|
||||
تعادل = MIN(1, 1) = 1
|
||||
امتیاز = 1 ✅
|
||||
```
|
||||
|
||||
**خلاصه Level 0**: User 1 → **1 امتیاز**
|
||||
|
||||
---
|
||||
|
||||
## 📊 جمع کل سیستم
|
||||
|
||||
| Level | تعداد کاربران | امتیاز هر کاربر | جمع امتیازهای Level |
|
||||
|-------|---------------|-----------------|---------------------|
|
||||
| 5 | 32 | 0 | 0 |
|
||||
| 4 | 16 | 1 | 16 |
|
||||
| 3 | 8 | 1 | 8 |
|
||||
| 2 | 4 | 1 | 4 |
|
||||
| 1 | 2 | 1 | 2 |
|
||||
| 0 | 1 | 1 | 1 |
|
||||
| **جمع** | **63** | - | **31 امتیاز** |
|
||||
|
||||
---
|
||||
|
||||
## 💰 محاسبه صندوق
|
||||
|
||||
### دادههای ورودی:
|
||||
```
|
||||
تعداد کاربران فعال شده این هفته: 63 نفر
|
||||
هزینه فعالسازی هر نفر: 25,000,000 ریال
|
||||
درصد سهم استخر: 20%
|
||||
|
||||
جمع ورودی استخر = 63 × 25,000,000 × 20%
|
||||
= 63 × 5,000,000
|
||||
= 315,000,000 ریال
|
||||
```
|
||||
|
||||
### محاسبه ارزش هر امتیاز:
|
||||
```
|
||||
مجموع امتیازهای سیستم = 31
|
||||
جمع استخر = 315,000,000 ریال
|
||||
|
||||
ارزش هر امتیاز = 315,000,000 ÷ 31
|
||||
= 10,161,290 ریال (تقریباً)
|
||||
```
|
||||
|
||||
### توزیع کمیسیون:
|
||||
```
|
||||
User 1: 1 × 10,161,290 = 10,161,290 ریال
|
||||
User 2: 1 × 10,161,290 = 10,161,290 ریال
|
||||
User 3: 1 × 10,161,290 = 10,161,290 ریال
|
||||
User 4-7: 4 × 10,161,290 = 40,645,160 ریال
|
||||
User 8-15: 8 × 10,161,290 = 81,290,320 ریال
|
||||
User 16-31: 16 × 10,161,290 = 162,580,640 ریال
|
||||
User 32-63: 0 ریال (امتیازی ندارند)
|
||||
|
||||
جمع کل پرداختی = 315,000,000 ریال ✅
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔥 مثال پیچیدهتر: سناریو نامتعادل
|
||||
|
||||
### تغییر ساختار:
|
||||
```
|
||||
User 1:
|
||||
چپ: 500 نفر (عمق زیاد)
|
||||
راست: 600 نفر (عمق بیشتر)
|
||||
```
|
||||
|
||||
### محاسبات User 1:
|
||||
```
|
||||
مرحله 1️⃣: تعادل اولیه
|
||||
چپ = 500، راست = 600
|
||||
تعادل = MIN(500, 600) = 500
|
||||
|
||||
مرحله 2️⃣: باقیمانده
|
||||
باقی چپ = 500 - 500 = 0
|
||||
باقی راست = 600 - 500 = 100 → هفته بعد
|
||||
|
||||
مرحله 3️⃣: اعمال سقف
|
||||
امتیاز = MIN(500, 300) = 300 ✅
|
||||
|
||||
مرحله 4️⃣: فلش
|
||||
فلش از چپ = 500 - 300 = 200
|
||||
فلش از راست = 500 - 300 = 200
|
||||
جمع فلش = 400 (از بین میرود)
|
||||
```
|
||||
|
||||
### نتیجه:
|
||||
```
|
||||
✅ امتیاز User 1: 300
|
||||
✅ باقیمانده راست: 100 (میرود هفته بعد)
|
||||
✅ باقیمانده چپ: 0
|
||||
✅ فلش شده: 400 (از بین رفته)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 مثال با Carryover (هفته بعد)
|
||||
|
||||
### فرض: User 1 در هفته 2025-W51:
|
||||
```
|
||||
باقیمانده هفته قبل:
|
||||
چپ: 0
|
||||
راست: 100
|
||||
|
||||
جدیدهای این هفته:
|
||||
چپ: 250
|
||||
راست: 150
|
||||
```
|
||||
|
||||
### محاسبات:
|
||||
```
|
||||
مرحله 1️⃣: جمع با هفته قبل
|
||||
چپ کل = 0 + 250 = 250
|
||||
راست کل = 100 + 150 = 250
|
||||
|
||||
مرحله 2️⃣: تعادل
|
||||
تعادل = MIN(250, 250) = 250
|
||||
|
||||
مرحله 3️⃣: باقیمانده
|
||||
باقی چپ = 250 - 250 = 0
|
||||
باقی راست = 250 - 250 = 0
|
||||
|
||||
مرحله 4️⃣: امتیاز
|
||||
امتیاز = MIN(250, 300) = 250 ✅
|
||||
|
||||
مرحله 5️⃣: فلش
|
||||
فلش = 0 (چون 250 < 300)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📈 مثال سقف: User با شبکه بزرگ
|
||||
|
||||
### User A:
|
||||
```
|
||||
چپ: 800 نفر
|
||||
راست: 900 نفر
|
||||
```
|
||||
|
||||
### محاسبات:
|
||||
```
|
||||
تعادل = MIN(800, 900) = 800
|
||||
باقی چپ = 800 - 800 = 0
|
||||
باقی راست = 900 - 800 = 100
|
||||
|
||||
امتیاز = MIN(800, 300) = 300 ✅
|
||||
|
||||
فلش:
|
||||
از چپ: 800 - 300 = 500
|
||||
از راست: 800 - 300 = 500
|
||||
جمع: 1000 (از بین میرود)
|
||||
```
|
||||
|
||||
**نتیجه**: حتی با 800 تعادل، فقط **300 امتیاز** میگیرد!
|
||||
|
||||
---
|
||||
|
||||
## 🎯 جمعبندی قوانین
|
||||
|
||||
### ✅ قوانین کلیدی:
|
||||
1. **تعادل** = MIN(چپ، راست)
|
||||
2. **باقیمانده** = طرفی که بیشتر است (قبل از سقف)
|
||||
3. **امتیاز** = MIN(تعادل، 300)
|
||||
4. **فلش** = (تعادل - 300) از هر دو طرف (اگر > 300)
|
||||
5. **محاسبه مستقل** = هر کاربر جداگانه
|
||||
6. **جمع صندوق** = مجموع امتیازهای همه
|
||||
|
||||
### ✅ نکات مهم:
|
||||
- باقیمانده **جداگانه** ذخیره میشود (چپ و راست)
|
||||
- فلش از **هر دو طرف** اتفاق میافتد
|
||||
- سقف 300 روی **امتیاز نهایی** اعمال میشود
|
||||
- هر کاربر مستقل از دیگران محاسبه میشود
|
||||
|
||||
---
|
||||
|
||||
## 📊 جدول مقایسه سناریوها
|
||||
|
||||
| سناریو | چپ | راست | تعادل | امتیاز | باقی چپ | باقی راست | فلش کل |
|
||||
|--------|-----|-------|--------|--------|---------|-----------|---------|
|
||||
| متعادل کوچک | 50 | 50 | 50 | 50 | 0 | 0 | 0 |
|
||||
| متعادل متوسط | 200 | 200 | 200 | 200 | 0 | 0 | 0 |
|
||||
| نامتعادل کوچک | 100 | 150 | 100 | 100 | 0 | 50 | 0 |
|
||||
| نامتعادل متوسط | 250 | 350 | 250 | 250 | 0 | 100 | 0 |
|
||||
| **سقف ساده** | **350** | **350** | **350** | **300** | **0** | **0** | **100** |
|
||||
| **سقف نامتعادل** | **500** | **600** | **500** | **300** | **0** | **100** | **400** |
|
||||
| سقف بزرگ | 800 | 900 | 800 | 300 | 0 | 100 | 1000 |
|
||||
|
||||
---
|
||||
|
||||
**پایان مثالهای عملی**
|
||||
|
||||
این مستند تمام حالات ممکن محاسبه تعادل را با مثالهای عددی واقعی نشان میدهد.
|
||||
Reference in New Issue
Block a user