דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. אלגוריתם המרת טבלה לעץ בצורה אופטימלית

אלגוריתם המרת טבלה לעץ בצורה אופטימלית

מתוזמן נעוץ נעול הועבר תכנות
3 פוסטים 3 כותבים 102 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • Y.Excel.AccessY מנותק
    Y.Excel.AccessY מנותק
    Y.Excel.Access
    כתב ב נערך לאחרונה על ידי
    #1

    יש לי נתונים המסודרים בטבלה לפי מספר שדות.
    אני רוצה להפוך אותם לעץ, בצורה שתמנע בזבוז מקום.
    אשמח לעזרה!

    לדוגמה:
    בטבלה יש 4 שדות- שם, פעולה, תאריך, מצב

    השורות בטבלה:

    יהודה, ריצה, כ' טבת, בריא
    זבולון, מנוחה, כ' טבת, בריא
    יהודה, ישיבה, ל' טבת, חולה
    יששכר, ריצה, ל' טבת, בריא
    זבולון, ישיבה , כ' טבת, בריא
    יהודה, ריצה, כו טבת, בריא
    זבולון, מנוחה, כה טבת, בריא

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

    בדוגמה שלנו - לכאורה ודאי שהשדה הראשון (ה'אב' הראשי בעץ) צריך להיות שדה 'מצב', כי כמעט כולם בריאים.
    אבל אח"כ לא ברור מה עדיף לשים, את השדה 'תאריך' כי יש כמה בכ' טבת וכמה בל'? את השדה 'שם' כי יש הרבה יהודה וזבולון? את השדה 'פעולה' כי לרוב כולם רצים או נחים?

    מקווה שהשאלה הובנה בצורה מספקת, אשמח להסביר עוד אם צריך.

    תודה רבה!

    Y.Excel.Access @ gmail.com

    dovidD קומפיונטק 2 תגובות תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      השיב לY.Excel.Access ב נערך לאחרונה על ידי dovid
      #2

      @Y-Excel-Access תלך לפי מספר האפשרויות הצפוי.
      בעמודות 2,4 ישנם כעת רק שני ערכים (בריא/חולה ריצה/ישיבה) וגם אם יהיו יותר הם עדיין עמודות "מצב", כלומר הם מכילים את הערכים שהכי חוזרים על עצמם.
      עמודה 1 יכולהל להיות כותרת כי יהיו הרבה תאריכים פר אדם,
      ואילו העמודה של התאריכים הכי פחות חוזרת על עצמה (מס' התאריכים יהיה משמעותי יותר מס' השורות ביום).

      שים לב שהשמשתי בתובנה מה הנתונים מכילים, אם זה אלגוריתם אז הוא צריך כמות מידע משמעותית יותר ממה שהצגת פה. האלגוריתם הוא DISTINCT לכל עמודה ובחירת העמודה עם הכי פחות ערכים לכותרת רמה 1 וכולי.

      מהלשון שלך ("לחסוך מקום") נשמע שאתה מחפש לחסוך לדיסק, שים לב שקובץ אקסל עם הוא דחיסה שאמורה לעשות את העבודה הזו.
      אם מדובר לתצוגה שים לב שחלוקה לרמות היא גם עניין של ניווט ויכול להיות עץ שיהיה מאוד לא נח לשימוש למרות שהוא חסכני (למשל איתור אדם שאינך יודע מה היה מצבו).

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      1
      • קומפיונטק מנותק
        קומפיונטק מנותק
        קומפיונט
        השיב לY.Excel.Access ב נערך לאחרונה על ידי
        #3

        @Y-Excel-Access כתב באלגוריתם המרת טבלה לעץ בצורה אופטימלית:

        אח"כ לא ברור מה עדיף לשים, את השדה 'תאריך' כי יש כמה בכ' טבת וכמה בל'? את השדה 'שם' כי יש הרבה יהודה וזבולון? את השדה 'פעולה' כי לרוב כולם רצים או נחים?

        עדיף לבחור את הערך שחוזר על עצמו הכי הרבה פעמים בטור, אבל צריך להתייחס בספירה רק לשורות בטבלה שערך האב בעץ זהה לאותו ערך באותו טור בטבלה.

        לדוגמה - בדוגמה שלך בסיס העץ מחולק לשתיים, בריא וחולה, אז שבאים לחשב את הילדים של בריא צריך למצוא באיזה טור יש ערך שחוזר על עצמו הכי הרבה פעמים, אבל צריך להתעלם משורות שמכילות את הערך חולה בטור מצב, כי זה לא רלוונטי לאב בריא.

        אם יש שני טורים עם מספר כפילויות זהה (כמו בדוגמא שלך), אז לפו"ר לא משנה איזה מהם תבחר.

        תגובה 1 תגובה אחרונה
        2

        בא תתחבר לדף היומי!
        • התחברות

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום