עץ פורש מינימלי

יום שלישי, מאי 25, 2010

בעיית העץ הפורש המינימלי היא בעייה קלאסית בתחום תורת הגראפים. לא כולם אוהבים או מתמצאים במתימטיקה, אלא שדווקא תורת הגראפים היא תחום קל להבנה אינטואיטיבית – ללא נוסחאות, ואפשר בקלות להבין מה הבעייה ואפילו כיצד לפתור אותה- מכיוון שהבעיות ויזואליות; בעיקר בבעייה זו. אשתמש באלגוריתם של Prim אותו אממש בעזרת CTE רקורסיבי: 1. נמספר את הקשתות בסדר עולה לפי האורך, ונתחיל עם הקטנה ביותר. 2. "נצבור" בעמודה S_in את הקשתות הכלולות בעץ הפורש המינימלי (כלומר- שני הקודקודים של כל קשת). 3. כל...

מחולל מספרים ראשוניים

יום רביעי, ינואר 13, 2010

לא הכי שימושי, אבל אתגר נצחי לחובבי הז'אנר: Declare @N Int=1000; With T As (Select 1 Mispar Union All Select Mispar+1 From T Where Mispar<@N) Select T1.Mispar*T2.Mispar Mispar From T T1, T T2 Group By T1.Mispar*T2.Mispar Having Count(*)=2 And T1.Mispar*T2.Mispar<=@N Order By 1 option (MaxRecursion 0); במקרה זה מוכפלים המספרים 1..1000 אלו באלו, ונשלפות המכפלות שמופיעות רק פעמיים: אלו הם המספרים הראשונים שנוצרים רק ממכפלה ב-1. ודרך שונה: Declare @N Int=1000; With T As (Select 2 Mispar Union All Select Mispar+1 From T Where Mispar<@N) Select Mispar From T T1 Where Not Exists (Select * From T T2 Where T2.Mispar<=Sqrt(T1.Mispar) And T1.Mispar%T2.Mispar=0) Order By 1 option (MaxRecursion 0); במקרה זה מחפשים את כל המספרים מ-2 ואילך שאין מספר אחר שהם מתחלקים בו ללא שארית (נבדקים כל המספרים מ-2 ועד שורש המספר - מטעמי יעילות). ולבסוף- הדרך הכי...
אין תגובות

מחיקת רשומות כפולות

יום שלישי, דצמבר 15, 2009

לעיתים נוצרות בטבלת עזר רשומות כפולות בשל טעות בקוד שהכניס פנימה נתונים או אולי בגלל כפילות מידע במקורות המידע השונים שמזינים אותה, וכעת יש למחוק כך שמכל רשומה - תישאר רק אחת. פעם הסיפור היה מסובך: היינו בונים טבלת עזר, מעבירים את הנתונים מהטבלה המקורית לטבלת העזר בעזרת Distinct, מוחקים את הנתונים מהטבלה המקורית, מעתיקים את הנתונים מטבלת העזר לטבלה המקורית, ולסיום- מבטלים את טבלת העזר.. כיום זה קצת יותר פשוט: ניצור טבלה להדגמה Create Table #Tmp(name VarChar(Max), ...
אין תגובות