לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #6  
ישן 10-01-2009, 21:28
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 5 שנכתבה על ידי shai_lev שמתחילה ב "סבבה הבנתי מה זה מפתח רק..."

עדיין איני בטוח שהבנתי מהו המושג "סיבוכיות" אבל האם לא התכוונת לסיבוכיות של m*n?
כאשר m זה גודל איבר ראשון ו-n גודל איבר שני...

בדיקה של איבר מול איבר מתבצע בצורה הבאה:
על כל איבר במערך הראשון, תעשי בדיקה על כל האיברים שבמערך השני (אם הם שווים אליו).
כך את עוברת על כל האיברים במערך הראשון...

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


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

אה! בעצם...
יש לנו את פעולת הכפל.
תוכלי בתחילה לכפול את כל האיברים במערך הראשון, כך:
קוד:
2*5*66*8*90

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

עריכה: בעצם רעיון (האחרון) טיפשי ויספק טעות...

נערך לאחרונה ע"י dorM בתאריך 10-01-2009 בשעה 21:32.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 11-01-2009, 21:08
צלמית המשתמש של Narxx
  משתמש זכר Narxx Narxx אינו מחובר  
 
חבר מתאריך: 21.12.04
הודעות: 30,020
בתגובה להודעה מספר 6 שנכתבה על ידי dorM שמתחילה ב "עדיין איני בטוח שהבנתי מהו..."

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

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

שים לב להגדרות כשאתה מקבל את התרגיל (מופנה לפותח האשכול).
מבחינת יעילות - אין פתרון יעיל יותר מפתרון לניארי, כמו זה שהוצע ע"י דור.
_____________________________________
בברכה, מתן.
www.MatanNarkiss.com

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 03:23

הדף נוצר ב 0.03 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2025 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר