אלבומם השני יצא בספטמבר 2004 ובמאי 2005 ונקרא "In Love and Death" (באהבה ובמוות), והפך גם הוא לאלבום פלטינה. שם האלבום נקרא כך על הטרגדיות שפקדו את סולן הלהקה בארט. חברתו שהייתה בהיריון נפטרה ממנת יתר, וכלבו נדרס על ידי מכונית ומת. השיר "Hard to say" נכתב על חברתו של סולן הלהקה בארט. הסינגלים שיצאו מתוך האלבום הם: "Take It Away", "All That I've Got", "I Caught Fire" ו-"Under Pressure" (שיצא במהדורה של 2005). "Under Pressure" הוא גרסת כיסוי שביצעה הלהקה יחד עם מיי כמיקל רומנס לשיר של קווין ודייוויד בואי.
ב-22 במאי 2007, יצא אלבומם השלישי של הלהקה, "Lies for the Liars", הכולל רצועת DVD של הכנת הקליפ "Lies for the Liars".
לפני יציאת האלבום תכננו חברי הלהקה להוציא מיני אלבום, אך בגלל בעיות עם חברת התקליטים תאריך יציאתו נדחה ולבסוף הוא יצא ב-19 בפברואר 2008. שם המיני האלבום הוא "Shallow Believer".
בינואר 2008, החלו חברי הלהקה לעבוד על, Artwork, אלבומם הרביעי אשר יצא לאור בשנת 2009.
אבן חלדון
פארבריינגען
קוד המינג
בתורת הקודים, קוד המינג הוא קוד תיקון שגיאות ליניארי, הקרוי על שמו של ריצ'רד המינג, שהגה אותו. קוד המינג מסוגל לזהות ולתקן שגיאות בסיבית בודדת, וכן לזהות (אך לא לתקן) שגיאה בשתי סיביות. לשם השוואה, קוד הזוגיות הפשוט אינו מסוגל לזהות שגיאות כאשר שתי סיביות מתהפכות, או לתקן את השגיאות שהוא כן מסוגל לזהות.
מספר הסיביות הנוספות הדרושות עבור קוד המינג הוא המינימלי ההכרחי עבור כל קוד לתיקון שגיאות המסוגל לתקן שגיאה בסיבית בודדת.
היסטוריה.
בשנות ה-40 של המאה ה-20 עבד ריצ'רד המינג במעבדות בל על המחשב האלקטרו-מכני "Bell Model V", אשר הקלט שלו הוזן בעזרת כרטיסים מנוקבים. עקב חוסר מהימנותו של קורא הכרטיסים, שגיאות בקריאת הכרטיסים היו דבר שבשגרה, ולכן במהלך ימי השבוע, קוד מובנה מיוחד במחשב היה מוצא שגיאות ומדליק נורות כך שמפעילי המחשב יכלו לתקן ידנית את הבעיות. לאחר שעות העבודה ובמהלך סופי השבוע, כאשר מפעילי המחשב לא היו נוכחים, כל שהמחשב יכול לעשות היה לנטוש את המשימה שבה התגלו שגיאות ולהמשיך למשימה הבאה.
המינג עבד בסופי שבוע, ונעשה מתוסכל יותר ויותר מהצורך להפעיל מחדש את התוכניות שלו עקב התקלות של קורא הכרטיסים. בשנים שלאחר מכן הוא שקד על בעיית תיקון-השגיאות ופיתח שורה של אלגוריתמים רבי-עוצמה לטיפול בבעיה. בשנת 1950 הוא פרסם את מה שידוע כיום כקוד המינג, אשר נשאר בשימוש במספר יישומים גם כיום.
קודים קודמים להמינג שנמצאו בשימוש.
מספר קודים פשוטים לזיהוי שגיאות נמצאו בשימוש לפני קודי המינג, אולם כולם נדרשו לתקורה גבוהה יותר של זיכרון מאשר קוד המינג.
סיבית זוגיות.
סיבית זוגיות הוא קוד המוסיף סיבית בודדת אשר מציינת אם מספר הסיביות שערכן הוא 1 במידע הוא זוגי או אי-זוגי. אם סיבית אחת במידע המשודר השתבשה, הרי שהזוגיות של המידע השתנתה, ועל כן ניתן לזהות שאירעה שגיאה (גם אם הסיבית שהשתבשה היא סיבית הזוגיות עצמה). ניתן אף לזהות כל שגיאה המערבת מספר אי-זוגי של סיביות שמשתבשות.
נהוג להגדיר כי אם סיבית הזוגיות שווה ל-1 הרי שישנו מספר אי-זוגי של סיביות השוות ל-1 במידע, ואם סיבית הזוגיות שווה ל-0 הרי שישנו מספר זוגי של סיביות השוות ל-1 במידע. מכאן נובע שבצירוף סיבית הזוגיות לסיביות המידע, צריך להיות מספר זוגי של סיביות השוות ל-1.
בדיקת זוגיות אינה חסינה לגמרי לשגיאות - אם מספר הסיביות שהשתבשו הוא זוגי, הרי שלא יהיה ניתן לזהות כי אירעה שגיאה, כיוון שכל שתי סיביות משובשות מבטלות את ההשפעה ההדדית על סיבית הזוגיות. יותר מכך, גם כאשר בדיקת הזוגיות מזהה כי אירעה שגיאה, לא ניתן לדעת באיזה סיבית או סיביות היא אירעה. על כן, יש להיפטר מכל המידע, ולשדרו מחדש לחלוטין. בערוץ רועש, שידור מוצלח יכול לקחת זמן רב, או לא לקרות לעולם.
למרות החסרונות מהם סובלת בדיקת הזוגיות, היא דורשת סיבית אחת בלבד עבור כל בלוק מידע, ועל כן התקורה בה היא נמוכה מאוד, והיא מאפשרת שחזור של סיבית חסרה, כאשר ידוע איזו סיבית חסרה (אף כי בפועל לרוב לא ניתן לדעת זאת).
קוד שתיים-מתוך-חמש.
בשנות ה-40 של המאה ה-20 השתמשו מעבדות בל בקוד מתוחכם מעט יותר הקרוי קוד שתיים-מתוך-חמש. קוד זה הבטיח כי כל בלוק של חמש סיביות הכיל בדיוק שתי סיביות עם הערך 1. המחשב יכל לזהות שאירעה שגיאה, אם לא היו בדיוק שתי סיביות עם הערך 1 בכל בלוק. עם זאת, גם קוד זה היה מסוגל לזהות בוודאות רק שגיאות בסיבית בודדת; אם סיבית אחת התהפכה ל-0 ואחרת התהפכה ל-1 באותו הבלוק, הכלל של שתיים מתוך חמש היה נשאר תקף, והשגיאה לא הייתה מתגלה.
הישנות.
קוד נפוץ נוסף באותו הזמן ביצע שכפול של כל סיבית מידע מספר קבוע של פעמים, במטרה להבטיח שהוא ישודר באופן תקין. למשל, אם הסיבית הנשלחת היא 1, וקבוע ההישנות הוא 3, קוד ההישנות המשודר היה "111". אם שלושת הביטים המתקבלים אינם זהים, הרי שבוודאות אירעה שגיאה. אם ערוץ השידור נקי מספיק מהפרעות, הרי שניתן להניח כי באופן סביר רק סיבית אחת לכל היותר תשתנה בכל שלשה. על כן, 001, 010, וכן 100 הצביעו על כך ששודר 0, ואילו 110, 101, וכן 011 הצביעו על כך ששודר 1, על פי עקרון הרוב כאשר כל סיבית בשלשה מהווה "קול הצבעה" בנוגע לערכה המקורי של הסיבית המשודרת.
קוד כזה, אשר מסוגל לשחזר את ההודעה המקורית בהינתן שגיאות בהודעה המשודרת נקרא קוד לתיקון שגיאות, אולם קודים שכאלה אינם מסוגלים לתקן את כל השגיאות. בדוגמה שלנו (שידור 1 כ-"111"), אם בעקבות רעש בערוץ שתי סיביות בשלשה היו מתחלפות והיה מתקבל לדוגמה "001", הרי שהמערכת לא הייתה מזהה את השגיאה כראוי, ואף מסיקה באופן שגוי כי הסיבית המקורית הייתה 0. אם היינו מגדילים את קבוע ההישנות ל-4 (כלומר היינו משכפלים כל סיבית 4 פעם), היינו מסוגלים לזהות את כל השגיאות הכוללות שיבוש של לכל היותר 2 סיביות, אולם לא היינו מסוגלים לתקן אותם (כי אז היה נוצר מצב של "תיקו" בערכי הסיביות המשודרות); אם קבוע ההישנות הוא 5, ניתן לתקן שגיאות אלה, אולם לא ניתן לזהות את כל השגיאות הכוללות שיבוש ב־3 סיביות.
אם נוסיף עוד סיביות לתיקון-שגיאות להודעה, ואם ניתן לארגן ששגיאות בסיביות מידע שונות יפיקו תוצאות שגיאה שונות, יהיה ניתן לזהות את הביטים השגויים. בהודעה באורך 7 סיביות, ישנן 7 שגיאות סיבית-בודדת אפשריות, על כן 3 סיביות לתיקון-שגיאות יכולות פוטנציאלית גם לציין שאירעה שגיאה, וגם היכן היא אירעה.
אף על היכולת לתקן שגיאות עבור קבועי הישנות הולכים וגדלים, קוד ההישנות אינו יעיל באופן מובהק, שכן הוא מקטין את קצב ההעברה פי קבוע ההישנות, על כן היעילות של הקוד יורדת דרסטית ככל שאנו מגדילים את קבוע ההישנות במטרה לזהות ולתקן שגיאות רבות יותר, והופך את הקוד ללא מעשי במערכות זמן אמת.
קודי המינג.
המינג למד את שיטות הקידוד הקיימות, כולל את שתיים-מתוך-חמש, והצליח להכליל את רעיונותיהם. תחילה, הוא קבע סימונים כלליים לתיאור המערכת, כולל סימון למספר סיביות המידע וסיביות לתיקון-שגיאות בכל בלוק. לדוגמה, קוד הזוגיות מכיל סיבית בודדת לכל מילת מידע, על כן בהנחה שמילות ASCII היו באורך 7 סיביות, המינג תיאר את קוד הזוגיות כקוד "(8,7)", כיוון שכל בלוק מידע הוא באורך 8 סיביות, מתוכם 7 מהווים את המידע. באופן דומה, קוד ההישנות היה מוגדר כ "(3,1)" (כאשר קבוע ההישנות הוא 3). "שיעור האינפורמציה" הוא המספר השני מחולק בראשון - בקוד ההישנות, לדוגמה, שיעור האינפורמציה שווה ל-1/3.
כמו כן, המינג שם לב לבעיות כאשר שתי סיביות או יותר מתהפכות, וכינה מצב זה כ"מרחק" (כיום מונח זה קרוי "מרחק המינג", על שמו). עקרונית, "מרחק המינג" הוא מספר הסיביות המינימלי שצריך לשנות במילת קוד חוקית כלשהי כדי לקבל מילת קוד חוקית אחרת. קוד הזוגיות הוא בעל מרחק 2, שכן כל שתי סיביות מתהפכות אינן מתגלות. קוד ההישנות (3,1) הוא בעל מרחק 3, שכן יש צורך לשנות לפחות 3 סיביות (כולן בשלשה אחת) כדי לקבל מילת קוד חוקית אחרת. באופן דומה, בקוד הישנות (4,1) - כל סיבית משוכפלת 4 פעמים - יש מרחק 4, על כן שגיאה של התהפכות שני ביטים ניתנת לגילוי.
המינג התעניין בשתי בעיות בבת-אחת; הגדלת המרחק ככל האפשר, כאשר באותו זמן מגדילים את שיעור המידע כמה שניתן. במהלך שנות ה-40, הוא פיתח מספר סכימות קידוד, אשר היוו שיפור דרמטי ביחס לקודים הקיימים. המפתח לכל המערכות שפיתח היה חפיפה בין סיביות הזוגיות, כך שהן היו מסוגלות לבדוק תקינות זו של זו, ולא רק של המידע עצמו.
תיאור תפקידן של סיביות הזוגיות בקוד המינג הכללי הוא די פשוט:
במילים אחרות, סיבית זוגיות במקום n, כאשר formula_1, בודקת את הביטים אשר הסיבית הk בייצוג הבינארי של המיקום שלהם שווה ל-1. במהופך, לדוגמה, הסיבית ה-13, או 1101 בייצוג בינארי, נבדקת על ידי הסיביות 1 (=0001), 4 (=0100) ו-8 (=1000).
יעילות התקורה של קוד המינג.
נמצא קודם מה מספר הסיביות המינימלי שיש להוסיף למילת מידע כדי להבטיח שניתן לתקן שגיאה בסיבית בודדת, ללא תלות בקוד התיקון:
נסמן את מספר הסיביות הנוספות הדרושות ב-r, ואת מספר הסיביות של המידע המקורי ב-m. על כן, אורך מילת הקוד המתקבלת יהיה r+m.