נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
מתמטיקה
RSS UnderWarrior Forums : RSS מתמטיקה
נושא

נושא: שאלה בקומבינטוריקה למי שיכול לעזור

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
david
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 15 April 2007 בשעה 22:02 | IP רשוּם
ציטוט david

במערכת בחירות זכו שני המועמדים ב -n קולות כל אחד.

בכמה אופנים ניתן למנות את הקולות כך שהמועמד הראשון יוביל במשך כל תהליך המניה

 

תודה לעוזרים...

חזרה לתחילת העמוד הצג את כרטיס החבר של david חפש הודעות אחרות של david בקר בדף הבית של david
 
kaplanal
משתמש מתחיל
משתמש מתחיל
סמל אישי

הצטרף / הצטרפה: 10 April 2007
מדינה: Israel
משתמש: מנותק/ת
הודעות: 27
נשלח בתאריך: 16 April 2007 בשעה 21:06 | IP רשוּם
ציטוט kaplanal

על כל קול של המועמד השני מוסיפים שני קולות של המועמד הראשון.עד שהמעמד הראשון

מגיע ל n קולות ונעצר שם,המועמד השני ממשיך לטפס עד שמגיע לn קולות גם כן.

חזרה לתחילת העמוד הצג את כרטיס החבר של kaplanal חפש הודעות אחרות של kaplanal בקר בדף הבית של kaplanal
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 16 April 2007 בשעה 21:57 | IP רשוּם
ציטוט shoshan

הוא לא ביקש תכנית הוא ביקש כמה דברים יש לעשות את זה :|

עבור n גדול מ-2
בהתחלה מספר הדרכים היא 1.
בכל פעם שסופרים קול ויש למועמד הראשון הפרש גדול מ-1 לעומת השני מספר האפשרויות
 מוכפל ב-2 (ומתפצלים לשתי אפשרויות: להוסיף לראשון או להוסיף לשני).

נניח שבסופו של דבר מתקבל 2 בחזקת n, הנה פונקציה (רקורסיבית) שמחשבת את n.
אני מקווה שתצליח לפתח ביטוי של התוצאה...(עוד שנייה שולח)


הנה התכנית לצורך החישוב:
קוד:
static void Main(string[ ] args)
{
    for ( int i = 2 ; i < 10 ; i++ )
    {
        Console.WriteLine("2^{0}", PossibilitiesLog2(i));
    }
}

static int N;

static int PossibilitiesLog2(int n)
{
    if ( n < 2 ) return -1;
    N = n;
    return 1 + count(0, 0);
}

private static int count(int N1, int N2)
{
    int temp = 0;
    for ( ++N1 ; N1 < N ; ++N1 )
    {
        if ( N2 + 1 < N1 )
            temp += 1 + count(N1, ++N2);
        temp += count(N1, N2);
    }
    return temp;
}


הפלט הינו:

קוד:
2^1
2^3
2^9
2^27
2^81
2^243
2^729
2^2187


והתוצאה יצאה שמספר הדרכים עבור n גדול או שווה ל-2 הינו:

2 בחזקת 3 בחזקת n-2

או במילים אחרות

קוד:
2 ^ [3 ^ (n-2)]



__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
שחר פפיני
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 18 April 2007 בשעה 09:18 | IP רשוּם
ציטוט שחר פפיני

אני חושב שאתה טועה.

הפתרון שלי:

הקול הראשון יהיה לטובת מועמד 1, והאחרון יהיה לטובת מועמד 2(כי 1 חייב להוביל כל הזמן).

כל אחד מהם יקבל בסופו של דבר n קולות כולל הראשון ל1 והאחרון ל2.

ולכן מספר האפשרויות הוא מספר קטלן(Catalan Number) ה n-1, כלומר:

(2n)!

-----

Z  n!*(n+1)!  Z

הZ רק למען היישור.

למי שלא מבין למה, http://en.wikipedia.org/wiki/Catalan_number

חזרה לתחילת העמוד הצג את כרטיס החבר של שחר פפיני חפש הודעות אחרות של שחר פפיני בקר בדף הבית של שחר פפיני
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה