Тез же жай: планың канчалык акылдуу?
Кээ бир чечимдер эмне үчүн башкалардан алда канча тез экенин жөнөкөй таанышуу
- «эффективдүүлүк» дегенди жөнөкөй сөз менен түшүндүрө аласың,
- тез план менен жай планды айырмалай аласың,
- жөнөкөй өсүү графигин окуп, үч ылдамдыкты атай аласың: бирдей иш, бирден жана алда канча көп.
1. Бир жооп, ар түрдүү ылдамдык
100 карандаштын кутусун полго төгүп жибердиң деп элестет. Сен кызылын табышың керек. Карандаштарды бирден алып, ар биринин түсүн текшере аласың. Же досуң карандаштар мурунтан түсү боюнча иреттелген кутуну берет, ошондо сен түз эле кызылдарга барасың.
Эки план тең кызыл карандашты табат. Бирок бири экинчисине караганда алда канча көп кадам талап кылат. Программалоодо маселени чечкен түшүнүктүү кадамдардын топтому алгоритм деп аталат. Бир эле маселенин тез алгоритми жана жай алгоритми болушу мүмкүн. Эффективдүүлүк — план канча иш кылышы керектиги жөнүндө.
2. Секундду эмес, кадамды сана
Тез компьютер менен жай компьютер ар башка убакытта бүтүрөт, ошондуктан секунддар бизди алдап коюшу мүмкүн. Анын ордуна программисттер кадамдарды санашат — план канча кичине аракет кыларын. Кадамдарды сануу ар кандай компьютерде иштейт.
Маанилүү суроо «10 нерсеге канча убакыт?» эмес. Ал мындай: «нерселердин саны алда канча көбөйгөндө эмне болот?» Эгер 10 карандаш болсо, бирден текшерүү жакшы. Эгер 1 000 000 карандаш болсо, «бирден» бүт күндү алышы мүмкүн, ал эми акылдуу план баары бир көз ачып жумганча бүтөт.
Программисттердин «маалымат өскөндө кадамдардын саны кантип өсөрүн» айткан өзгөчө ыкмасынын лакап аты бар: Big-O (Чоң О). Эч кандай татаал математика керек эмес — муну нерселер чоңойгондо тез, орточо же жай деп айткан белгидей элестет.