... לתקינה? וכאן אפשרי להניח שרוב האנשים יגידו שכן. כי אם אורך הסיסמה קטן מ 6 תווים, אז צריך להוסיף תווים. ואם אורך הסיסמה גדול מ 20 תווים, אז צריכים
למחוק תווים. אבל מאחר שחשוב לנו ללמוד לחלק לחלקים, אז אומר בצורה ברורה, כי מצד האמת, אפשרי לנסח את השאלה בצורה עוד יותר פשוטה. דהיינו: התנאי של אורך סיסמה ... וגם עד כאן אני מניח שהתשובה ברורה, והיא שעלינו לבדוק את אורך הסיסמה (=N) ואם אורך הסיסמה גדול מ X (אורך מקסימאלי) תווים, הרי שזה אומר שעלינו
למחוק N-X תווים, כדי שהסיסמה תהיה תקינה. לדוגמה אם אורך הסיסמה הוא 33 דהיינו, אורך שגדול מ X=20, אז 33-20 = 13 ולכן נצטרך
למחוק 13 תווים כדי לגרום לסיסמה להיות תקינה. דהיינו, נצטרך לעשות 13 פעולות של מחיקה כדי לגרום לסיסמה להיות תקינה כסיסמה חזקה. ועכשיו נשאל, האם אני יודע ... תווים? וגם כאן אפשרי להניח התשובה היא שכן, אם יש פחות מ X(אורך מינימלי), אז צריך להוסיף תווים. ואם יש יותר מ Y (אורך מקסימאלי) תווים, אז צריכים
למחוק אותיות, כדי לגרום לסיסמה להיות תקינה. ועד כאן בעצם היתה דוגמה לאיך לחלק לחלקים קטנים. עכשיו נעבור לחוק מספר 2 שאומר שהסיסמה צריכה להכיל לפחות אות 1 ... 3 תווים או יותר רצופים. ונשאל, האם נדע לפתור מקרה לדוגמה שאסור שיהיה תו ספציפי רצוף, לדוגמה AAA? והתשובה היא, שאם לדוגמה יש לנו AAA עלינו או
למחוק A אחד וישאר רק AA או להחליף תו אחד לדוגמה A1A או 1AA או AA1 ועכשיו הסיסמה תהיה תקינה. או להוסיף תו אחד לדוגמה A1AA או AA1A, שגם כך הסיסמה הופכת להיות תקינה. ואם יש לנו 4 תווים רצופים, לדוגמה AAAA עלינו או
למחוק 2 תווים ונקבל AA. או להוסיף תו אחד לדוגמה AA1AA או להחליף תו אחד לדוגמה A1AA או AA1A ואז הסיסמה תהיה תקינה. ואם יש לנו 5 תווים רצופים, לדוגמה AAAAA עלינו או
למחוק 3 תווים, ונקבל AA או להוסיף 2 תווים לדוגמה AA1AA2A או להחליף תו אחד דהיינו, AA1AA וככה הסיסמה תהיה תקינה. ואם יש לנו 6 תווים רצופים, לדוגמה AAAAAA אז עלינו או
למחוק 4 או להוסיף 2 ל AA1AA2AA או להחליף 2 כך AA2AA1 וכיוב. ואם יש לנו 7 לדוגמה AAAAAAA אז עלינו או
למחוק 5 או להוסיף 3 כך: AA2AA3AA1A או להחליף 2 כך: AA1AA2A. ואם יש לנו 8 לדוגמה AAAAAAAA אז עלינו או
למחוק 6 או להוסיף 3 כך: AA2AA3AA1AA או להחליף 2 כך: AA1AA2AA וכך עלינו להמשיך ולבדוק ידנית עוד מקרים, מבחינתי עד 20 תווים רצופים, שזה המספר המקסימאלי של ... 5 פעולות מחיקה להתאים את האורך + פעולה 1 של החלפה, כדי להוסיף אות קטנה ולא פעולה של הוספה, כדי לא לפגוע באורך + ב 5 הפעולות מחיקה הקודמות, נוכל
למחוק את כל רצף האותיות הנל. דהיינו, סהכ נצטרך 6 פעולות בלבד. 5 של מחיקה + 1 של החלפה. אז מהי מהות הפתרון עד כה? במילים אחרות, ניקח את הפעולות שהן בטוח ... דהיינו, שבטוח צריך לבצע אותן ובאמצעותן נפתור את כל שאר הפעולות שאולי צריך לבצע. דהיינו, אם חובה לבצע פעולות מחיקה בגלל האורך, נוכל באמצעותן
למחוק אותיות רצופות. אם חובה לבצע פעולות הוספה בגלל האורך, נוכל באמצעות פעולות ההוספה לתקן בהתאם לתווים חסרים או רצופים. כאשר אם ואחרי שהאורך תקין, תמיד ... אחד של 4 אותיות או של 16 אותיות וכולי. מאיזה רצף כדאי לנו לבצע את פעולת המחיקה? האם זה משנה? ואם נניח הסיסמה היא באורך של 22 אותיות ואנחנו צריכים
למחוק 2 אותיות, ויש לנו רצף אחד של 3 אותיות ורצף אחד של 5 אותיות, מאיזה רצף כדאי לנו
למחוק? האם זה משנה? אז כנראה שכן, ונבדוק: נניח שיש לנו את הסיסמה הבאה באורך של 22 כך: AAAAAbbb12345678901234 ויש לנו בוודאות לבצע 2 פעולות מחיקה. אז מה האפשרויות שיש לנו? 1 -
למחוק מהרצף של ה bbb שתי אותיות 2 -
למחוק מהרצף של AAAAA שתי אותיות 3 -
למחוק מהרצף של bbb אות 1 ומהרצף של AAAAA גם כן אות 1. אז מה הכי כדאי לעשות? האם זה משפיע? מה החוקיות? אז נראה, שבאפשרות 1 שנמחק 2 אותיות מהרצף של b הרי ... של ה b ו 1 מהרצף של ה A, גם אז נצטרך לבצעה אחר כך עוד פעולה 1 של החלפה. במילים אחרות, אנחנו צריכים למצוא נוסחה, איך לדעת מאיזה רצף של אותיות
למחוק קודם וכמה
למחוק. או ניקח לדוגמה את המקרה הבא באורך של 23 כך: 12345AAAAAAbbbbbb111111 הרי שאנחנו צריכים לבצע 3 מחיקות. ומאחר שיש לנו בתוך הסיסמה 3 רצפים של 6 אותיות. אז אנחנו יכולים: או
למחוק 3 מרצף כלשהו, או
למחוק 2 מרצף כלשהו + 1 מרצף אחר, או
למחוק 1 מכל אחד מהרצפים. אם נמחק 3 מהרצף הראשון, הרי שנישאר עם 3 רצפים של 3+6+6 ונצטרך לעשות עוד 5 פעולות. אם נמחק 2 מרצף כלשהו ו 1 מרצף אחר, הרי שנישאר עם ... לדוגמה רצף של 17 יצטרך 17 לחלק ל 3 יוצא 5, דהיינו, 5 פעולות החלפה וכולי. ומכאן נחזור לשאול את עצמנו, איזו פעולת מחיקה הכי יעילה? היכן הכי כדאי
למחוק? והתשובה תהיה, היכן שפעולת המחיקה חוסכת הכי הרבה פעולות החלפה. דהיינו, אם נחקור בצורה ידנית את כל הרצפים מ 3 עד 20, נראה ש: רצף של 3 6 9 12 15 18 ... 2 פעולות החלפה, נצטרך רק פעולת החלפה 1 בלבד. או במילים אחרות, אם יש לנו X פעולות מחיקה אפשריות, לדוגמה נניח של פעולת מחיקה 1, הרי שנעדיף קודם כל
למחוק מרצפים באורך של כפולות של 3 דהיינו, של 3 6 9 12 15 18. כי רק בהם המחיקה חוסכת פעולה של החלפה. אבל ברצפים של כפולות של 3 בתוספת 1 (דהיינו 4 7 10 13 16 ... של 3 בתוספת 2 (דהיינו 5 8 11 14 17 20) כנל, פעולה של מחיקה של תו 1, לא תביא תועלת כלשהי. ואם יש לנו אפשרות לבצע 2 פעולות מחיקה, אז קודם כל נתעדף
למחוק תו 1 מרצפים של כפולות של 3 (3 6 9 12 15 18) ורק אחר כך נעבור
למחוק מרצפים של כפולות של 3 בתוספת 1 או בתוספת של 2. למרות שלא נקבל בפעולת המחיקה השניה שום תועלת. כי ברצף של כפולות של 3 בתוספת של 1 או של 2, חייבים יותר ...