מעט עזרה - ערכי האש
בוקר טוב. בהתחלה חשבתי לשאול בפורום מתמ', והחלטתי שעדיף פה, בכל זאת. בשביל פרוייקט שאני מנסה לכתוב עכשיו (בעצם - בודק האם זה בכלל אפשרי ברמתי), אני אצטרך, קרוב לוודאי, פונקציית האש מיוחדת (לא צריך להסביר פה מה זה hash
). המטרה של פונקציית ההאש היא לאפשר pattern matching מהיר. כלומר, לכל "תמונה" בייצוג דו מימדי, אני צריך למצוא את החלק הגדול ביותר ממנה, שנמצא באיזה DB מוכן (אשר, כמובן, ייטען בחלקו הגדול לראם). כלומר, ה"מפות" שצריך להשוות הן מטריצות, שמכילות 0 או 1 או 2 בכל תא. בדקתי קצת את הנושא, וגיליתי שפונקציית ההאש הנוכחית שמומלצת במקרה שלי (xor של הכל, פחות או יותר), לא מתאימה, כי אני מחפש כמה תכונות ספציפיות שישפרו את המהירות: א) התמונה של שני ערכים קרובים במישור הבעה, צריכה להיות קרובה גם בתמונה, כדי לאפשר "חיפוש מקורב" של pattern. ב) כאשר מחפשים pattern כלשהו, צריכה להתאפשר אחת משתי האופציות הבאות. או שאם נחפש pattern מינימלי, גם כאלו הגדולים ממנו שמכילים אותו יימצאו ב"קלות", או שאם נחפש pattern מקסימלי, גם כאלו שהוא מכיל יימצאו ב"קלות". (אלו שני הפכים של הטענה). ג) הפיכת הערכים 1 ו-2, עדיף שתהיה מהירה ככל האפשר. כלומר, אם אפשר, שניתן יהיה להגיע מהר מההאש של המטריצה שמכילה את הערכים 0,1,2, להאש של המטריצה שמכילה את הערכים 0,2,1. המטרה של החלק השני (ב' - החשוב ביותר), היא שבמקרה שאנו רוצים לחפש למשל מטריצה בגודל 5X5, בתוך מסד נתונים המכיל "דברים" בגודל 20X20, לא נצטרך לחפש את כל התת-התאמות האפשריות. חשבתי, חשבתי, וחשבתי, ואין לי ממש מושג איך לעשות את זה. במילא, לרוב תיעבתי, hash. יש רעיונות?
בתודה, רון.
בוקר טוב. בהתחלה חשבתי לשאול בפורום מתמ', והחלטתי שעדיף פה, בכל זאת. בשביל פרוייקט שאני מנסה לכתוב עכשיו (בעצם - בודק האם זה בכלל אפשרי ברמתי), אני אצטרך, קרוב לוודאי, פונקציית האש מיוחדת (לא צריך להסביר פה מה זה hash