[Powered by Google Translate] [סעמינאַר: טעכנישע ינטערוויעווס] [קעני יו, האַרוואַרד אוניווערסיטעט] [דאס איז קס50.] [CS50.TV] הי אַלעמען, איך בין קעני. איך בין דערווייַל אַ יינגער געלערנט קאָמפּיוטער וויסנשאַפֿט. איך בין אַ ערשטע קס טף, און איך ווינטשן איך געהאט דעם ווען איך איז געווען אַ ונדערקלאַססמאַן, און אַז ס וואָס איך בין געבן דעם סעמינאַר. אַזוי איך האָפֿן איר הנאה עס. דעם סעמינאַר איז וועגן טעכניש ינטערוויוז, און אַלע מיין רעסורסן קענען זייַן געפונען בייַ דעם לינק, דעם לינק רעכט דאָ, אַ פּאָר פון רעסורסן. אַזוי איך געמאכט אַ רשימה פון פּראָבלעמס, פאקטיש, גאַנץ אַ ביסל פּראָבלעמס. אויך אַ גענעראַל רעסורסן בלאַט ווו מיר קענען געפֿינען עצות אויף ווי צו צוגרייטן פֿאַר אַן אינטערוויו, עצות אויף וואָס איר זאָל טאָן בעשאַס אַ פאַקטיש אינטערוויו, ווי ווויל ווי ווי צו צוגאַנג פּראָבלעמס און רעסורסן פֿאַר צוקונפֿט דערמאָנען. עס ס אַלע אָנליין. און נאָר צו פאררעדע דעם סעמינאַר, אַ אָפּלייקענונג, ווי דאָס זאָל ניט - דיין אינטערוויו צוגרייטונג זאָל ניט זייַן באגרענעצט צו דעם רשימה. דאס איז בלויז מענט צו זייַן אַ פירער, און איר זאָל באשטימט נעמען אַלץ איך זאָגן מיט אַ קערל פון זאַלץ, אָבער אויך נוצן אַלץ איך געניצט צו העלפן איר אין אייער אינטערוויו צוגרייטונג. איך בין געגאנגען צו גיכקייַט דורך דער ווייַטער ביסל סליידז אַזוי מיר קענען באַקומען צו דעם פאַקטיש פאַל שטודיום. די סטרוקטור פון אַן אינטערוויו פֿאַר אַ ווייכווארג אינזשעניריע פּאָסטיאָן, טיפּיקלי עס איז 30-45 מינוט, קייפל ראָונדס, דיפּענדינג אויף דער געזעלשאַפט. אָפֿט איר וועט זייַן קאָודינג אויף אַ ווייַס ברעט. אַזוי אַ ווייַס ברעט ווי דעם, אָבער אָפֿט אויף אַ קלענערער וואָג. אויב איר ניטאָ בעת אַ טעלעפאָן אינטערוויו, איר וועט מיסטאָמע זייַן ניצן אָדער קאָללאַבעדיט אָדער אַ גוגל שולדבאַנק אַזוי זיי קענען זען איר לעבן קאָודינג בשעת איר ניטאָ זייַענדיק ינטערוויוד איבער דעם טעלעפאָן. אַן אינטערוויו זיך איז טיפּיקלי 2 אָדער 3 פראבלעמען טעסטינג דיין קאָמפּיוטער וויסנשאַפֿט וויסן. און עס וועט כּמעט באשטימט אַרייַנציען קאָודינג. די טייפּס פון שאלות וואָס איר וועט זען זענען יוזשאַוואַלי דאַטן סטראַקטשערז און אַלגערידאַמז. און אין טאן די מינים פון פּראָבלעמס, זיי וועלן פרעגן איר, ווי, וואָס איז די צייַט און פּלאַץ קאַמפּלעקסיטי, גרויס אָ? אָפֿט זיי אויך פרעגן העכער-מדרגה שאלות, אַזוי, דיזיינינג אַ סיסטעם, ווי וואָלט איר לייגן אויס דיין קאָד? וואָס ינערפייסיז, וואָס קלאסן, וואָס מאַדזשולז טאָן איר האָבן אין דיין סיסטעם, און ווי טאָן די ינטעראַקט צוזאַמען? אַזוי דאַטן סטראַקטשערז און אַלגערידאַמז ווי געזונט ווי דיזיינינג סיסטעמען. עטלעכע גענעראַל עצות איידער מיר ונטערטוקנ זיך אין צו אונדזער פאַל שטודיום. איך טראַכטן די מערסט וויכטיק הערשן איז שטענדיק זייַן טראכטן אויס הויך. דער אינטערוויו איז געמיינט צו זייַן דיין געלעגנהייַט צו ווייַזן אַוועק דיין טראכטן פּראָצעס. די פונט פון די אינטערוויו איז פֿאַר די ינערוויוער צו מאָס ווי איר טראַכטן און ווי איר גיין דורך אַ פּראָבלעם. די ערגסט זאַך איר קענען טאָן איז זייַן שטיל איבער די גאנצע אינטערוויו. אַז ס נאָר ניט גוט. ווען איר זענט געגעבן אַ קשיא, איר אויך ווילן צו מאַכן זיכער איר פֿאַרשטיין די קשיא. אַזוי איבערחזרן די קשיא צוריק אין דיין אייגן ווערטער און פּרווון צו אַרבעטן גרונטיק אַ ביסל פּשוט פּרובירן פאלן צו מאַכן זיכער איר פֿאַרשטיין די קשיא. ארבעטן דורך אַ ביסל פּרובירן פאלן וועט אויך געבן איר אַ ינטוישאַן אויף ווי צו סאָלווע דעם פּראָבלעם. איר זאל אַפֿילו אַנטדעקן אַ ביסל פּאַטערנז צו העלפן איר סאָלווע די פּראָבלעם. זייער גרויס שפּיץ איז צו נישט באַקומען פראַסטרייטאַד. צי ניט באַקומען פראַסטרייטאַד. ינטערוויוז זענען טשאַלאַנדזשינג, אָבער די ערגסט זאַך איר קענען טאָן, אין דערצו צו זייַענדיק שטיל, איז צו זייַן וויזאַבלי פראַסטרייטאַד. איר טאָן נישט וועלן צו געבן אַז רושם צו אַ ינערוויוער. איין זאַך וואָס איר - אַזוי, פילע מענטשן, ווען זיי גיין אין אַן אינטערוויו, זיי פּרווון צו פּרובירן צו געפֿינען די בעסטער לייזונג ערשטער, ווען טאַקע, דאָרט ס יוזשאַוואַלי אַ גלאַרינגלי קלאָר ווי דער טאָג לייזונג. עס זאל זייַן פּאַמעלעך, עס זאל זייַן באַטלאָניש, אָבער איר זאָל נאָר שטאַט עס, נאָר אַזוי איר האָבן אַ סטאַרטינג פונט פון וועלכע צו אַרבעטן בעסער. אויך, פּוינטינג אויס די לייזונג איז פּאַמעלעך, אין טערמינען פון גרויס אָ צייַט קאַמפּלעקסיטי אָדער פּלאַץ קאַמפּלעקסיטי, וועט באַווייַזן צו דער ינערוויוער אַז איר פֿאַרשטיין די ענינים ווען שרייבן קאָד. אַזוי טאָן נישט זייַן דערשראָקן צו קומען אַרויף מיט די סימפּלאַסט אַלגערידאַם ערשטער און דעמאָלט אַרבעט בעסער פון דאָרט. קיין שאלות אַזוי ווייַט? אָוקיי. אַזוי לאָזן ס ונטערטוקנ זיך אין אונדזער ערשטער פּראָבלעם. "געגעבן אַ מענגע פון ​​N ינטאַדזשערז, שרייַבן אַ פֿונקציע וואָס שאַפאַלז די מענגע אין שטעלן אַזאַ וואָס אַלע פּערמיוטיישאַנז פון די ען ינטאַדזשערז זענען גלייַך מסתּמא. " און יבערנעמען איר האָבן פאַראַנען אַ טראַפ ינטעגער גענעראַטאָר אַז דזשענערייץ אַ ינטעגער אין אַ קייט פון 0 צו איך, האַלב קייט. טוט אַלעמען פֿאַרשטיין דעם קשיא? איך געבן איר אַ מענגע פון ​​N ינטאַדזשערז, און איך ווילן איר צו שאַרן עס. אין מיין וועגווייַזער, איך געשריבן אַ ביסל מגילה צו באַווייַזן וואָס איך מיינען. איך בין געגאנגען צו שאַרן אַ מענגע פון ​​20 עלעמענטן, פון -10 צו 9, און איך וועלן איר צו רעזולטאַט אַ רשימה ווי דעם. אַזוי דאָס איז מיין אויסגעשטעלט אַרייַנשרייַב מענגע, און איך ווילן איר צו שאַרן עס. מיר וועט טאָן עס ווידער. טוט אַלעמען פֿאַרשטיין די קשיא? אָוקיי. אַזוי עס ס אַרויף צו איר. וואָס זענען עטלעכע געדאנקען? קענען איר טאָן עס ווי N ^ 2, N קלאָץ ן, ען? עפענען צו פֿירלייגן. אָוקיי. אַזוי איין געדאַנק, סאַגדזשעסטיד דורך עמי, איז ערשטער צונויפרעכענען אַ טראַפ - נומער, טראַפ ינטעגער, אין אַ קייט 0-20. אַזוי יבערנעמען אונדזער מענגע האט אַ לענג פון 20. אין אונדזער דיאַגראַמע פון ​​20 עלעמענטן, דאָס איז אונדזער אַרייַנשרייַב מענגע. און איצט, איר פאָרשלאָג איז צו שאַפֿן אַ נייַ מענגע, אַזוי דאָס וועט זייַן דער רעזולטאַט מענגע. און באזירט אויף דעם איך אומגעקערט דורך ראַנד - אַזוי אויב איך געווען, לאָזן ס זאָגן, 17, קאָפּי די 17 עלעמענט אין דער ערשטער שטעלע. איצט מיר דאַרפֿן צו אויסמעקן - מיר דאַרפֿן צו יבעררוק אַלע די יסודות דאָ איבער אַזוי אַז מיר האָבן אַ ריס אין די סוף און קיין האָלעס אין דער מיטן. און איצט מיר איבערחזרן דעם פּראָצעס. איצט מיר קלייַבן אַ נייַ טראַפ ינטעגער צווישן 0 און 19. מיר האָבן אַ נייַ איך דאָ, און מיר צייכענען דעם עלעמענט אין דעם שטעלע. דעמאָלט מיר יבעררוק זאכן איבער און מיר איבערחזרן דעם פּראָצעס ביז מיר האָבן אונדזער פול נייַ מענגע. וואָס איז די לויפן צייַט פון דעם אַלגערידאַם? נו, לאָזן ס באַטראַכטן די פּראַל פון דעם. מיר זענען שיפטינג יעדער עלעמענט. ווען מיר אַראָפּנעמען דעם איך, מיר זענען שיפטינג אַלע די יסודות נאָך עס צו די לינקס. און וואָס איז אַן אָ (N) קאָסטן ווייַל וואָס אויב מיר באַזייַטיקן דער ערשטער עלעמענט? אַזוי פֿאַר יעדער באַזייַטיקונג, מיר באַזייַטיקן - יעדער באַזייַטיקונג ינקערז אַ אָ (N) אָפּעראַציע, און זינט מיר האָבן N רימווואַלז, דאָס פירט צו אַן אָ (N ^ 2) שאַרן. אָוקיי. אַזוי גוט אָנהייב. גוט אָנהייב. אן אנדער פאָרשלאָג איז צו נוצן עפּעס באקאנט ווי די נוט שאַרן, אָדער דער פישער-יאַטעס שאַרן. און עס ס 'פאקטיש אַ לינעאַר צייַט שאַרן. און דער געדאַנק איז זייער ענלעך. ווידער, מיר האָבן אונדזער אַרייַנשרייַב מענגע, אָבער אַנשטאָט פון ניצן צוויי ערייז פֿאַר אונדזער אַרייַנשרייַב / רעזולטאַט, מיר נוצן די ערשטער חלק פון די מענגע צו האַלטן שפּור פון אונדזער שאַפאַלד חלק, און מיר האַלטן שפּור, און דאַן מיר לאָזן די מנוחה פון אונדזער מענגע פֿאַר די ונשופפלעד חלק. אַזוי דאָ ס וואָס איך מיינען. מיר אָנהייבן אַוועק מיט - מיר קלייַבן אַן איך, אַ מענגע 0-20. אונדזער קראַנט טייַטל איז פּוינטינג צו דער ערשטער אינדעקס. מיר קלייַבן עטלעכע איך דאָ און איצט מיר ויסבייַטן. אַזוי אויב דאָס איז 5, און דאָס איז געווען 4, די ריזאַלטינג מענגע וועט האָבן 5 דאָ און 4 דאָ. און איצט מיר טאָן אַ מאַרקער דאָ. אַלץ צו דער לינקס איז שאַפאַלד, און אַלץ צו די רעכט איז ונשופפלעד. און איצט מיר קענען איבערחזרן דעם פּראָצעס. מיר קלייַבן אַ טראַפ אינדעקס צווישן 1 און 20 איצט. אַזוי רעכן אונדזער נייַ איך איז דאָ. איצט מיר ויסבייַטן דעם איך מיט אונדזער קראַנט נייַ שטעלע דאָ. אַזוי מיר טאָן אַ סוואַפּינג צוריק און אַרויס ווי דעם. זאל מיר ברענגען אַרויף דעם קאָד צו מאַכן עס מער באַטאָנען. מיר אָנהייבן מיט אונדזער ברירה פון איך - מיר אָנהייבן מיט איך גלייַך צו 0, מיר קלייַבן אַ טראַפ - אָרט דזש אין די ונשופפלעד חלק פון די מענגע, איך צו N-1. אַזוי אויב איך בין דאָ, קלייַבן אַ טראַפ אינדעקס צווישן דאָ און די מנוחה פון די מענגע, און מיר ויסבייַטן. דאס איז אַלע דער קאָד נייטיק צו שאַרן דיין מענגע. קיין שאלות? נו, איינער דארף קשיא איז, וואָס איז דעם ריכטיק? פארוואס איז יעדער פּערמיוטיישאַן גלייַך מסתּמא? און איך וועל נישט גיין דורך דעם דערווייַז פון דעם, אָבער פילע פראבלעמען אין קאָמפּיוטער וויסנשאַפֿט קענען זייַן פּראָווען דורך ינדאַקשאַן. ווי פילע פון ​​איר זענט באַקאַנט מיט ינדאַקשאַן? אָוקיי. קיל. אַזוי איר קענען באַווייַזן די קערעקטנאַס פון דעם אַלגערידאַם דורך פּשוט ינדאַקשאַן, ווו דיין ינדאַקשאַן כייפּאַטאַסאַס וואָלט זייַן, יבערנעמען אַז מיין שאַרן קערט יעדער פּערמיוטיישאַן גלייַך מסתּמא אַרויף צו די ערשטער איך עלעמענטן. איצט, באַטראַכטן איך + 1. און דורך דעם וועג מיר קלייַבן אונדזער אינדעקס דזש צו ויסבייַטן, דאָס פירט צו - און דאַן איר אַרבעט אויס די פרטים, בייַ מינדסטער אַ פול דערווייַז פון וואָס דאָס אַלגערידאַם קערט יעדער פּערמיוטיישאַן מיט גלייַך מסתּמא מאַשמאָעס. אַלע רעכט, ווייַטער פּראָבלעם. אַזוי "געגעבן אַ מענגע פון ​​ינטאַדזשערז, פּאָסטיווע, נול, נעגאַטיוו, שרייַבן אַ פֿונקציע וואָס קאַלקיאַלייץ די מאַקסימום סאַכאַקל פון קיין קאָנטינועאָוס סובאַררייַ פון די אַרייַנשרייַב מענגע. " אַ בייַשפּיל דאָ איז, אין דעם פאַל ווו אַלע נומערן זענען positive, דעמאָלט דערווייַל דער בעסטער ברירה איז צו נעמען די גאנצע מענגע. 1, 2, 3, 4, יקוואַלז 10. ווען איר האָבן עטלעכע נעגאַטיוועס אין דאָרט, אין דעם פאַל מיר נאָר ווילן די ערשטער צוויי ווייַל טשוזינג -1 און / אָדער -3 וועט ברענגען אונדזער סאַכאַקל אַראָפּ. מאל מיר זאל האָבן צו אָנהייבן אין די מיטן פון די מענגע. מאל מיר ווילן צו קלייַבן גאָרנישט בייַ אַלע; עס ס בעסטער צו נישט נעמען עפּעס. און מאל עס ס 'בעסער צו נעמען די פאַלן, ווייַל די זאַך נאָך עס איז סופּער גרויס. אַזוי קיין געדאנקען? (תּלמיד, אַנינטעלאַדזשאַבאַל) >> יאָ. רעכן איך טאָן ניט נעמען -1. דעמאָלט אָדער איך קלייַבן 1.000 און 20,000, אָדער איך נאָר קלייַבן די 3000000000. נו, דער בעסטער ברירה איז צו נעמען אַלע די נומערן. דאס -1, טראָץ זייַענדיק נעגאַטיוו, די גאנצע סאַכאַקל איז בעסער ווי זענען איך נישט צו נעמען -1. אַזוי איינער פון די עצות איך דערמאנט פריער איז געווען צו שטאַט דער קלאר קלאָר ווי דער טאָג און די ברוט קראַפט לייזונג ערשטער. וואָס איז די ברוט קראַפט לייזונג אין דעם פּראָבלעם? יאָ? [דזשיין] גוט, איך טראַכטן די ברוט קראַפט לייזונג וואָלט זייַן צו לייגן אַרויף אַלע די מעגלעך קאַמבאַניישאַנז (אַנינטעלאַדזשאַבאַל). [יו] אָוקיי. אַזוי דזשיין ס געדאַנק איז צו נעמען יעדער מעגלעך - איך בין פּעראַפרייזינג - איז צו נעמען יעדער מעגלעך קעסיידערדיק סובאַררייַ, צונויפרעכענען זייַן סאַכאַקל, און דאַן נעמען די מאַקסימום פון אַלע די מעגלעך קעסיידערדיק סובאַררייַס. וואָס יוניקלי יידענטאַפייז אַ סובאַררייַ אין מיין אַרייַנשרייַב מענגע? ווי, וואָס צוויי זאכן טאָן איך דאַרפֿן? יאָ? (תּלמיד, אַנינטעלאַדזשאַבאַל) >> רעכט. א נידעריקער געבונדן אויף די אינדעקס און אַ אויבערשטער געבונדן אינדעקס יוניקלי דאַטערמאַנז אַ קעסיידערדיק סובאַררייַ. [ווייַבלעך תּלמיד] ביסט מיר עסטאַמייטינג עס ס אַ מענגע פון ​​יינציק נומערן? [יו] נומ אזוי איר קשיא איז, זענען מיר אַסומינג אונדזער מענגע - איז אונדזער מענגע אַלע יינציק נומערן, און דער ענטפער איז ניט. אויב מיר נוצן אונדזער ברוט קראַפט לייזונג, דעמאָלט דער אָנהייב / סוף ינדיסעס יוניקלי דאַטערמאַנז אונדזער קעסיידערדיק סובאַררייַ. אַזוי אויב מיר יטעראַטע פֿאַר אַלע מעגלעך אָנהייב איינסן, און פֿאַר אַלע סוף איינסן> אָדער = צו אָנהייבן, און > זעראָ. נאָר טאָן ניט נעמען די -5. דאָ עס ס געגאנגען צו זייַן 0 ווי געזונט. יאָ? (תּלמיד, אַנינטעלאַדזשאַבאַל) [יו] אָה, אנטשולדיגט, עס איז אַ -3. אַזוי דאָס איז אַ 2, דאָס איז אַ -3. אָוקיי. אַזוי -4, וואָס ס די מאַקסימאַל סובאַררייַ צו סוף אַז שטעלע ווו -4 איז בייַ? נול. איינער? 1, 5, 8. איצט, איך מוזן סוף בייַ דער אָרט ווו -2 איז בייַ. אַזוי 6, 5, 7, און די לעצטע איינער איז 4. געוואוסט אַז די ביסט מיין איינסן פֿאַר די פארוואנדלען פּראָבלעם ווו איך מוזן סוף אין יעדער פון די ינדיסעס, דעריבער מיין לעצט ענטפער איז נאָר, נעמען אַ ויסקערן אַריבער, און נעמען די מאַקסימום נומער. אַזוי אין דעם פאַל עס ס 8. דאס ימפּלייז אַז די מאַקסימאַל סובאַררייַ ענדס בייַ דעם אינדעקס, און אנגעהויבן ערגעץ איידער עס. טוט אַלעמען פֿאַרשטיין דעם פארוואנדלען סובאַררייַ? אָוקיי. נו, לאָזן ס רעכענען אויס די ריקעראַנס פֿאַר דעם. זאל ס באַטראַכטן נאָר דער ערשטער ביסל איינסן. אַזוי דאָ עס איז געווען 0, 0, 0, 1, 5, 8. און דעמאָלט דאָרט איז געווען אַ -2 דאָ, און אַז געבראכט עס אַראָפּ צו 6. אַזוי אויב איך רופן די פּאָזיציע אין שטעלע איך סובפּראָבלעם (איך), ווי קענען איך נוצן דעם ענטפער צו אַ פֿריִערדיקע סובפּראָבלעם צו ענטפֿערן דעם סובפּראָבלעם? אויב איך קוק בייַ, לאָזן ס זאָגן, דעם פּאָזיציע. ווי קענען איך צונויפרעכענען דער ענטפֿערן 6 דורך קוקן בייַ אַ קאָמבינאַציע פון ​​דעם מענגע און די ענטפֿערס צו פֿריִערדיקע סובפּראָבלעמס אין דעם מענגע? יא? [ווייַבלעך תּלמיד] איר נעמען די מענגע פון ​​סאַמז אין די שטעלע רעכט איידער עס, אַזוי די 8, און דאַן איר לייגן די קראַנט סובפּראָבלעם. [יו] אזוי איר פאָרשלאָג איז צו קוקן בייַ די צוויי נומערן, דעם נומער און דעם נומער. אַזוי דעם 8 רעפערס צו די ענטפער פֿאַר די סובפּראָבלעם (איך - 1). און לאָזן ס רופן מיין אַרייַנשרייַב מענגע יי אין סדר צו געפֿינען אַ מאַקסימאַל סובאַררייַ אַז ענדס בייַ שטעלע איך, איך האב צוויי ברירות: איך קענען אָדער פאָרזעצן דעם סובאַררייַ אַז געענדיקט אין די פֿריִערדיקע אינדעקס, אָדער אָנהייבן אַ נייַ מענגע. אויב איך געווען צו פאָרזעצן די סובאַררייַ אַז אנגעהויבן בייַ די פֿריִערדיקע אינדעקס, דעריבער די מאַקסימום סאַכאַקל איך קענען דערגרייכן איז דער ענטפער צו די פֿריִערדיקע סובפּראָבלעם פּלוס די קראַנט מענגע פּאָזיציע. אבער, איך אויך האָבן די ברירה פון סטאַרטינג אַ נייַ סובאַררייַ, אין וואָס פאַל די סאַכאַקל איז 0. אַזוי דער ענטפער איז מאַקס פון 0, סובפּראָבלעם איך - 1, פּלוס די קראַנט מענגע פּאָזיציע. טוט דעם ריקעראַנס מאַכן זינען? אונדזער ריקעראַנס, ווי מיר נאָר דיסקאַווערד, איז סובפּראָבלעם איך איז גלייַך צו די מאַקסימום פון די פֿריִערדיקע סובפּראָבלעם פּלוס מיין קראַנט מענגע פּאָזיציע, וואָס מיטל פאָרזעצן די פֿריִערדיקע סובאַררייַ, אָדער 0, אָנהייבן אַ נייַ סובאַררייַ בייַ מיין קראַנט אינדעקס. און אַמאָל מיר האָבן געבויט אַרויף דעם טיש פון סאַלושאַנז, דעמאָלט אונדזער לעצט ענטפֿערן, נאָר טאָן אַ לינעאַר ויסקערן אַריבער די סובפּראָבלעם מענגע און נעמען די מאַקסימום נומער. דאס איז אַן פּינטלעך ימפּלאַמענטיישאַן פון וואָס איך נאָר געזאגט. אַזוי מיר שאַפֿן אַ נייַ סובפּראָבלעם מענגע, סובפּראָבלעמס. דער ערשטער פּאָזיציע איז אָדער 0 אָדער דער ערשטער פּאָזיציע, די מאַקסימום פון יענע צוויי. און פֿאַר די מנוחה פון די סובפּראָבלעמס מיר נוצן די פּינטלעך ריקעראַנס מיר נאָר דיסקאַווערד. איצט מיר צונויפרעכענען די מאַקסימום פון אונדזער סובפּראָבלעמס מענגע, און אַז ס אונדזער לעצט ענטפֿערן. אַזוי ווי פיל פּלאַץ זענען מיר ניצן אין דעם אַלגערידאַם? אויב איר ווע נאָר גענומען קס50, דעמאָלט איר זאל נישט האָבן דיסקאַסט פּלאַץ זייער פיל. גוט, איין זאַך צו טאָן איז אַז איך גערופן מאַללאָק דאָ מיט גרייס ען. וואָס טוט אַז פֿאָרשלאָגן צו איר? דאס אַלגערידאַם ניצט לינעאַר פּלאַץ. קענען מיר טאָן בעסער? איז עס עפּעס וואָס איר באַמערקן אַז איז ומנייטיק צו צונויפרעכענען די לעצט ענטפֿערן? איך טרעפן אַ בעסער קשיא איז, וואָס אינפֿאָרמאַציע טאָן מיר נישט דאַרפֿן צו פירן אַלע די וועג דורך צו דער סוף? איצט, אויב מיר קוקן אין די צוויי שורות, מיר נאָר זאָרגן וועגן די פֿריִערדיקע סובפּראָבלעם, און מיר נאָר זאָרגן וועגן די מאַקסימום מיר ווע אלץ געזען אַזוי ווייַט. צו צונויפרעכענען אונדזער לעצט ענטפֿערן, מיר טאָן ניט דאַרפֿן די גאנצע מענגע. מיר נאָר דאַרפֿן די לעצטע נומער, לעצטע צוויי נומערן. לעצטע נומער פֿאַר די סובפּראָבלעם מענגע, און לעצטע נומער פֿאַר די מאַקסימום. אַזוי, אין פאַקט, מיר קענען קאָריק די לופּס צוזאַמען און גיין פון לינעאַר פּלאַץ צו קעסיידערדיק פּלאַץ. קראַנט סאַכאַקל אַזוי ווייַט, דאָ, ריפּלייסיז די ראָלע פון ​​סובפּראָבלעם, אונדזער סובפּראָבלעם מענגע. אַזוי קראַנט סאַכאַקל, אַזוי ווייַט, איז דער ענטפער צו די פֿריִערדיקע סובפּראָבלעם. און אַז סאַכאַקל, אַזוי ווייַט, נעמט דער פּלאַץ פון אונדזער מאַקס. מיר צונויפרעכענען די מאַקסימום ווי מיר גיין צוזאמען. און אַזוי מיר גיין פון לינעאַר פּלאַץ צו קעסיידערדיק פּלאַץ, און מיר אויך האָבן אַ לינעאַר לייזונג צו אונדזער סובאַררייַ פּראָבלעם. די מינים פון שאלות איר וועט באַקומען בעשאַס אַן אינטערוויו. וואָס איז די צייַט קאַמפּלעקסיטי; וואָס איז די פּלאַץ קאַמפּלעקסיטי? קענען איר טאָן בעסער? זענען דאָרט זאכן וואָס זענען ומנייטיק צו האַלטן אַרום? איך האט דאָס צו הויכפּונקט אַנאַליזעס אַז איר זאָל נעמען אויף דיין אייגן ווי איר ניטאָ ארבעטן דורך די פראבלעמען. שטענדיק זייַן אַסקינג זיך ", קען איך טאָן בעסער?" אין פאַקט, קענען מיר טאָן בעסער ווי דעם? סאָרט פון אַ קונץ קשיא. איר קענען נישט, ווייַל איר דאַרפֿן צו בייַ מינדסטער לייענען דעם אַרייַנשרייַב צו די פּראָבלעם. אַזוי דער פאַקט אַז איר דאַרפֿן צו בייַ מינדסטער לייענען דעם אַרייַנשרייַב צו די פּראָבלעם מיטל אַז איר קענען נישט טאָן בעסער ווי לינעאַר צייַט, און איר קענען נישט טאָן בעסער ווי קעסיידערדיק פּלאַץ. אַזוי דאָס איז, אין פאַקט, די בעסטער לייזונג צו דעם פּראָבלעם. שאלות? אָוקיי. לאַגער מאַרק פּראָבלעם: "געגעבן אַ מענגע פון ​​N ינטאַדזשערז, positive, נול, אָדער נעגאַטיוו, אַז פאָרשטעלן די פּרייַז פון אַ לאַגער איבער N טעג, שרייַבן אַ פֿונקציע צו צונויפרעכענען די מאַקסימום נוץ איר קענען מאַכן געגעבן אַז איר קויפן און פאַרקויפן פּונקט 1 לאַגער ין די N טעג. " יסענשאַלי, מיר ווילן צו קויפן נידעריק, פאַרקויפן הויך. און מיר ווילן צו רעכענען אויס די בעסטער נוץ מיר קענען מאַכן. גיי צוריק צו מיין שפּיץ, וואָס איז די מיד קלאָר, סימפּלאַסט ענטפֿערן, אָבער עס ס פּאַמעלעך? יא? (תּלמיד, אַנינטעלאַדזשאַבאַל) >> יא. >> אזוי איר וואָלט נאָר גיין כאָטש און קוק בייַ די לאַגער פּרייסיז בייַ יעדער פונט אין צייַט, (אַנינטעלאַדזשאַבאַל). [יו] אָוקיי, אַזוי איר לייזונג - איר פאָרשלאָג פון קאָמפּוטינג די לאָואַסט און קאָמפּוטינג דעם העכסטן טוט נישט דאַווקע אַרבעט ווייַל די העכסטן זאל פאַלן איידער די לאָואַסט. אַזוי וואָס איז די ברוט קראַפט לייזונג צו דעם פּראָבלעם? וואָס זענען די צוויי זאכן וואָס איך דאַרפֿן צו יוניקלי באַשטימען די נוץ איך מאַכן? רעכט. די ברוט קראַפט לייזונג איז - אָה, אַזוי, דזשארזש ס פאָרשלאָג איז מיר נאָר דאַרפֿן צוויי טעג צו יוניקלי באַשטימען די נוץ פון יענע צוויי טעג. אַזוי מיר צונויפרעכענען יעדער פּאָר, ווי קויפן / פאַרקויפן, צונויפרעכענען די נוץ, וואָס קען זייַן נעגאַטיוו אָדער positive אָדער נול. צונויפרעכענען די מאַקסימום נוץ אַז מיר מאַכן נאָך יטעראַטינג איבער אַלע פּערז פון טעג. וואָס וועט זייַן אונדזער לעצט ענטפֿערן. און אַז לייזונג וועט זייַן אָ (N ^ 2), ווייַל עס איז N קלייַבן צוויי פּערז - פון טעג אַז איר קענען קלייַבן צווישן סוף טעג. אָוקיי, אַזוי איך בין נישט געגאנגען צו גיין איבער די ברוט קראַפט לייזונג דאָ. איך בין געגאנגען צו זאָגן איר אַז דאָרט ס אַן N קלאָץ N לייזונג. וואָס אַלגערידאַם טאָן איר דערווייַל וויסן וואָס איז N קלאָץ ען? עס ס נישט אַ קונץ קשיא. צונויפגיסן סאָרט. צונויפגיסן סאָרט איז N קלאָץ N, און אין פאַקט, איין וועג פון סאַלווינג דעם פּראָבלעם איז צו נוצן אַ צונויפגיסן סאָרט מין פון געדאַנק גערופן, אין אַלגעמיין, טיילן און קאַנגקער. און דער געדאַנק איז ווי גייט. איר ווילן צו צונויפרעכענען דער בעסטער קויפן / פאַרקויפן פּאָר אין די לינקס האַלב. געפֿינען די בעסטער נוץ איר קענען מאַכן, נאָר מיט דעם ערשטער N איבער צוויי טעג. דעמאָלט איר ווילן צו אָאָמפּוטע דער בעסטער קויפן / פאַרקויפן פּאָר אויף די רעכט האַלב, אַזוי די לעצטע N איבער צוויי טעג. און איצט די פֿראַגע איז, ווי טאָן מיר צונויפגיסן די סאַלושאַנז צוריק צוזאַמען? יא? (תּלמיד, אַנינטעלאַדזשאַבאַל) >> אָוקיי. אַזוי לאָזן מיר ציען אַ בילד. יא? (דזשארזש, אַנינטעלאַדזשאַבאַל) >> עקסאַקטלי. דזשארזש ס לייזונג איז פּונקט רעכט. אַזוי זייַן פאָרשלאָג איז, ערשטער צונויפרעכענען דער בעסטער קויפן / פאַרקויפן פּאָר, און אַז אַקערז אין די לינקס האַלב, אַזוי לאָזן ס רופן אַז לינקס, לינקס. בעסטער קויפן / פאַרקויפן פּאָר אַז אַקערז אין די רעכט האַלב. אבער אויב מיר נאָר קאַמפּערד די צוויי נומערן, מיר רע פעלנדיק דער פאַל ווו מיר קויפן דאָ און פאַרקויפן ערגעץ אין די רעכט האַלב. מיר קויפן אין די לינקס האַלב, פאַרקויפן אין די רעכט האַלב. און די בעסטער וועג צו צונויפרעכענען דער בעסטער קויפן / פאַרקויפן פּאָר אַז ספּאַנס ביידע כאַווז איז צו צונויפרעכענען די מינימום דאָ און צונויפרעכענען די מאַקסימום דאָ און נעמען זייער חילוק. אַזוי די צוויי פאלן ווו די קויפן / פאַרקויפן פּאָר אַקערז נאָר דאָ, נאָר דאָ, אָדער אויף ביידע כאַווז איז דיפיינד דורך די דרייַ נומערן. אַזוי אונדזער אַלגערידאַם צו צונויפגיסן אונדזער סאַלושאַנז צוריק אינאיינעם, מיר ווילן צו צונויפרעכענען דער בעסטער קויפן / פאַרקויפן פּאָר ווו מיר קויפן אויף די לינקס האַלב און פאַרקויפן אויף די רעכט האַלב. און די בעסטער וועג צו טאָן וואָס איז צו צונויפרעכענען די לאָואַסט פּרייַז אין דער ערשטער העלפט, דעם העכסטן פּרייַז אין דער רעכט האַלב, און נעמען זייער חילוק. די ריזאַלטינג דרייַ פּראַפיץ, די דרייַ נומערן, איר נעמען די מאַקסימום פון די דרייַ, און אַז ס דער בעסטער נוץ איר קענען מאַכן איבער די ערשטער און סוף טעג. דאָ די וויכטיק שורות זענען אין רויט. דאס איז אַ רעקורסיווע רופן צו צונויפרעכענען דער ענטפֿערן אין די לינקס האַלב. דאס איז אַ רעקורסיווע רופן צו צונויפרעכענען דער ענטפֿערן אין די רעכט האַלב. די צוויי פֿאַר לופּס צונויפרעכענען דעם מין און די מאַקס אויף די לינק און רעכט האַלב, ריספּעקטיוולי. איצט איך צונויפרעכענען די נוץ אַז ספּאַנס ביידע כאַווז, און די לעצט ענטפֿערן איז די מאַקסימום פון די דרייַ. אָוקיי. אַזוי, זיכער, מיר האָבן אַ אַלגערידאַם, אָבער די ביגער קשיא איז, וואָס איז די צייַט קאַמפּלעקסיטי פון דעם? און די סיבה וואָס איך דערמאנט צונויפגיסן סאָרט איז אַז דעם פאָרעם פון טיילן דעם ענטפֿערן אין צוויי און דעמאָלט מערדזשינג אונדזער סאַלושאַנז צוריק צוזאַמען איז פּונקט די פאָרעם פון צונויפגיסן סאָרט. אַזוי לאָזן מיר גיין דורך דער געדויער. אויב מיר דיפיינד אַ פֿונקציע ה (N) צו זייַן די נומער פון טריט פֿאַר N טעג, אונדזער צוויי רעקורסיווע רופט זענען יעדער געגאנגען צו פּרייַז ה (N / 2), און דאָרט ס צוויי פון די רופט. איצט איך דאַרפֿן צו צונויפרעכענען די מינימום פון די לינקס האַלב, וואָס איך קען טאָן אין N / 2 מאָל, פּלוס די מאַקסימום פון די רעכט האַלב. אַזוי דאָס איז נאָר ען. און דעמאָלט פּלוס עטלעכע קעסיידערדיק אַרבעט. און דעם ריקעראַנס יקווייזשאַן איז פּונקט די ריקעראַנס יקווייזשאַן פֿאַר צונויפגיסן סאָרט. און מיר אַלע וויסן אַז צונויפגיסן סאָרט איז N קלאָץ N צייַט. דעריבער, אונדזער אַלגערידאַם איז אויך N קלאָץ N צייַט. טוט דעם יטעראַטיאָן מאַכן זינען? נאָר אַ קורץ ריקאַפּ פון דעם: ה (N) איז די נומער פון טריט צו צונויפרעכענען די מאַקסימום נוץ איבער די לויף פון N טעג. די וועג מיר שפּאַלטן זיך אונדזער רעקורסיווע רופט איז דורך פאַך אונדזער לייזונג אויף דער ערשטער N / 2 טעג, אַזוי אַז ס 'איין רופן, און דעמאָלט מיר רופן ווידער אויף די רגע האַלב. אַזוי אַז ס צוויי רופט. און דעמאָלט מיר געפֿינען אַ מינימום אויף די לינקס העלפט, וואָס מיר קענען טאָן אין לינעאַר צייַט, געפֿינען די מאַקסימום פון די רעכט העלפט, וואָס מיר קענען טאָן אין לינעאַר צייַט. אַזוי N / 2 + N / 2 איז נאָר ען. דעמאָלט מיר האָבן עטלעכע קעסיידערדיק אַרבעט, וואָס איז ווי טאן אַריטמעטיק. דאס ריקעראַנס יקווייזשאַן איז פּונקט די ריקעראַנס יקווייזשאַן פֿאַר צונויפגיסן סאָרט. דערפאר, אונדזער שאַרן אַלגערידאַם איז אויך N קלאָץ ען. אַזוי ווי פיל פּלאַץ זענען מיר ניצן? זאל ס גיין צוריק צו די קאָד. א בעסער קשיא איז, ווי פילע אָנלייגן ראָמען טאָן מיר אלץ האָבן אין קיין געגעבן מאָמענט? זינט מיר רע ניצן רעקורסיאָן, די נומער פון אָנלייגן ראָמען דאַטערמאַנז אונדזער פּלאַץ באַניץ. זאל ס באַטראַכטן N = 8. מיר רופן שאַרן אויף 8, וואָס וועט רופן שאַרן אויף דער ערשטער פיר איינסן, וואָס וועט רופן אַ שאַרן אויף דער ערשטער צוויי איינסן. אַזוי אונדזער אָנלייגן איז - דאָס איז אונדזער אָנלייגן. און דעמאָלט מיר רופן שאַרן ווידער אויף 1, און אַז ס וואָס אונדזער באַזע פאַל איז, אַזוי מיר צוריקקומען מיד. צי מיר אלץ האָבן מער ווי דעם פילע אָנלייגן ראָמען? נומ ווייַל יעדער צייַט מיר טאָן אַן ינוואַקיישאַן, אַ רעקורסיווע ינוואַקיישאַן צו שאַרן, מיר טיילן אונדזער גרייס אין העלפט. אַזוי די מאַקסימום נומער פון אָנלייגן ראָמען מיר אלץ האָבן אין קיין געגעבן מאָמענט איז אויף די סדר פון קלאָץ N אָנלייגן ראָמען. יעדער אָנלייגן ראַם האט קעסיידערדיק פּלאַץ, און דעריבער די גאַנץ סומע פון ​​פּלאַץ, די מאַקסימום סומע פון ​​פּלאַץ מיר אלץ נוצן איז אָ (קלאָץ N) פּלאַץ ווו ען איז די נומער פון טעג. איצט, שטענדיק פרעגן זיך ", קענען מיר טאָן בעסער?" און אין באַזונדער, קענען מיר רעדוצירן דעם צו אַ פּראָבלעם מיר ווע שוין סאַלווד? א אָנצוהערעניש: מיר נאָר דיסקאַסט צוויי אנדערע פראבלעמען פאר דעם, און עס ס ניט געגאנגען צו זייַן שאַרן. מיר קענען בייַטן דעם לאַגער מאַרק פּראָבלעם אין די מאַקסימאַל סובאַררייַ פּראָבלעם. ווי קענען מיר טאָן דעם? איינער פון איר? עמי? (עמי, אַנינטעלאַדזשאַבאַל) [יו] עקסאַקטלי. אַזוי די מאַקסימאַל סובאַררייַ פּראָבלעם, מיר רע קוקן פֿאַר אַ סאַכאַקל איבער אַ קעסיידערדיק סובאַררייַ. און עמי ס פאָרשלאָג פֿאַר די סטאַקס פּראָבלעם, באַטראַכטן די ענדערונגען, אָדער די דעלטאַז. און אַ בילד פון דעם איז - דאָס איז די פּרייַז פון אַ לאַגער, אָבער אויב מיר גענומען די חילוק צווישן יעדער קאָנסעקוטיווע טאָג - אַזוי מיר זען אַז די מאַקסימום פּרייַז, מאַקסימום נוץ מיר קען מאַכן איז אויב מיר קויפן דאָ און פאַרקויפן דאָ. אבער לאָזן ס קוק בייַ די קעסיידערדיק - לאָזן ס קוק בייַ די סובאַררייַ פּראָבלעם. אַזוי דאָ, מיר קענען מאַכן - געגאנגען פון דאָ צו דאָ, מיר האָבן אַ positive טוישן, און דעמאָלט געגאנגען פון דאָ צו דאָ מיר האָבן אַ נעגאַטיוו טוישן. אבער דעמאָלט, געגאנגען פון דאָ צו דאָ מיר האָבן אַ ריזיק positive טוישן. און די זענען די ענדערונגען וואָס מיר ווילן צו סאַכאַקל אַרויף צו באַקומען אונדזער לעצט נוץ. דעמאָלט מיר האָבן מער נעגאַטיוו ענדערונגען דאָ. דער שליסל צו רידוסינג אונדזער לאַגער פּראָבלעם אין אונדזער מאַקסימאַל סובאַררייַ פּראָבלעם איז צו באַטראַכטן די דעלטאַז צווישן טעג. אַזוי מיר שאַפֿן אַ נייַ מענגע גערופן דעלטאַז, ינישאַלייז דער ערשטער פּאָזיציע צו זייַן 0, און דעמאָלט פֿאַר יעדער דעלטאַ (איך), לאָזן אַז זייַן דער חילוק פון מיין אַרייַנשרייַב מענגע (איך), און מענגע (איך - 1). דעמאָלט מיר רופן אונדזער רוטין פּראָצעדור פֿאַר אַ מאַקסימאַל סובאַררייַ גייט פארביי אין אַ דעלטאַ ס מענגע. און ווייַל מאַקסימאַל סובאַררייַ איז לינעאַר צייַט, און דעם רעדוקציע, דעם פּראָצעס פון שאפן דעם דעלטאַ מענגע, איז אויך לינעאַר צייַט, דעריבער די לעצט לייזונג פֿאַר סטאַקס איז אָ (N) אַרבעט פּלוס אָ (N) אַרבעט, איז נאָך אָ (N) אַרבעט. אַזוי מיר האָבן אַ לינעאַר צייַט לייזונג צו אונדזער פּראָבלעם. טוט אַלעמען פֿאַרשטיין דעם טראַנספאָרמאַציע? אין אַלגעמיין, אַ גוט געדאַנק אַז איר זאָל שטענדיק האָבן איז פּרובירן צו רעדוצירן אַ נייַ פּראָבלעם אַז איר ניטאָ געזען. אויב עס קוקט באַקאַנט צו אַן אַלט פּראָבלעם, פּרובירן רידוסינג עס צו אַן אַלט פּראָבלעם. און אויב איר קענען נוצן אַלע דעם מכשירים אַז איר ווע געניצט אויף די אַלט פּראָבלעם צו סאָלווע די נייַ פּראָבלעם. אַזוי צו ייַנוויקלען אַרויף, טעכניש ינטערוויוז זענען טשאַלאַנדזשינג. די פראבלעמען זענען מיסטאָמע עטלעכע פון ​​די מער שווער פּראָבלעמס אַז איר זאל זען אין אַן אינטערוויו, אַזוי אויב איר טאָן נישט פֿאַרשטיין אַלע די פראבלעמען וואָס איך נאָר באדעקט, עס ס אָוקיי. דאס זענען עטלעכע פון ​​די מער טשאַלאַנדזשינג פּראָבלעמס. פיר, פיר, פיר. איך געגעבן אַ פּלאַץ פון פראבלעמען אין די כאַנדאַוט, אַזוי באשטימט טשעק יענע אויס. און גוט גליק אויף דיין ינטערוויוז. כל מיין רעסורסן זענען אַרייַנגעשיקט אין דעם לינק, און איינער פון מיין עלטער פריינט האט געפֿינט צו טאָן כויזעק מאַכן טעכניש ינטערוויוז, אַזוי אויב איר ניטאָ אינטערעסירט, בליצפּאָסט וועט יאַו בייַ אַז בליצפּאָסט אַדרעס. אויב איר האָט עטלעכע פראגעס, איר קענען פרעגן מיר. צי איר גייז האָבן ספּעציפיש שאלות שייַכות צו טעכניש ינטערוויוז אָדער קיין פראבלעמען מיר ווע געזען אַזוי ווייַט? אָוקיי. נו, גוט גליק אויף דיין ינטערוויוז. [CS50.TV]