Алгоритм дегеніміз не?

Алгоритмдер әлемді қалай басқаратынын біліңіз

Алгоритм - нұсқаулық жиынтығы. Анықтау өте қарапайым. Алгоритм келесідей нұсқаулықтар бергендей оңай болуы мүмкін:

  1. Көшеге барыңыз
  2. Бірінші құқықты алыңыз
  3. Сол жақтан екінші үйді табыңыз
  4. Есікті жауып тастаңыз
  5. Пакетті жеткізіңіз.

Бірақ алгоритмнің анықтамасы қарапайым, ал шын мәнінде және біздің өмірімізге қалай әсер ететіні өте күрделі болуы мүмкін.

Алгоритмнің мысалы

Біздің күнделікті өмірімізде пайдаланатын алгоритмнің жалпы мысалы - бұл рецепт. Нұсқаулықтың бұл жиынтығы бізге қажетті барлық ингредиенттерді береді және осы ингредиенттермен не істеу керектігіне нұсқайды. Оңай естіледі, дұрыс?

Ал егер өлшеуіш кесе қайда сақталмағанын білмесеңіз не істеу керек? Оны табу үшін алгоритм қажет. Сіз тіпті өлшеуіш тостағанды ​​қалай пайдалану туралы алгоритм қажет болуы мүмкін.

Алгоритм нұсқаулар жиынтығы болғанымен, сол нұсқаулықтарды кімге немесе қалай түсіндіретініне назар аудару керек. Мысалы, досыңыздан үйден ең жақын азық-түлік дүкеніне қалай жету туралы нұсқаулар берсеңіз, сіздің үйіңіз орналасқан жер туралы білсеңіз, досыңыз сол дүкенге қалай жету керектігін біледі. Олар белгілі бір азық-түлік дүкенінен басқа досының үйінен табу қабілетіне ие емес.

Алгоритм қарапайым және күрделі болуы мүмкін. Ал компьютерлік алгоритмдер туралы сөйлескен кезде, компьютердің жұмыс істей алатынын түсіну алгоритмдерді қалыптастырудың негізгі бөлігі болып табылады.

Сұрыптау алгоритмдері қалай дамыды

Жасалған ең алғашқы алгоритмдердің бірі көпіршікті сұрыптау тәртібі болды. Көпіршікті сұрыптау сандар, әріптер немесе сөздерді деректер жиынтығы арқылы айналдыру, мәндердің әрқайсысын бір-бірімен салыстыру және қажет болғанда оларды ауыстыру әдісі болып табылады.

Бұл цикл, алгоритм ештеңені ауыстырмай-ақ, бүкіл тізім бойынша жылжитынға дейін қайталанады, яғни мәндер дұрыс сұрыпталған. Алгоритмнің бұл түрі көбінесе рекурсивті алгоритм деп аталады, себебі ол тапсырманы аяқтағанға дейін қайта-қайта жалғастырады.

Алгоритм қарапайым болуы мүмкін:

  1. Бірінші мәнге өтіңіз.
  2. Келесі мәнге қарсы мәнді тексеріңіз және қажет болса, ауыстыру орындарын тексеріңіз
  3. Келесі мәнге өтіңіз және салыстыруды қайталаңыз.
  4. Егер тізімнің соңында болсаңыз, цикл кезінде қандай да бір мән өзгерген болса, жоғарыға оралыңыз.

Бірақ көпіршікті сұрыптау құндылықтарды сұрыптаудың ең тиімді әдісі болып табылмады. Уақыт өте келе компьютерлер күрделі тапсырмаларды жылдам орындауға қабілетті болды, жаңа сұрыптау алгоритмдері пайда болды.

Осындай бір алгоритм бірінші тізімді қарап шығып, сұрыпталған мәндердің екінші тізімін жасайды. Бұл әдіс тек түпнұсқа тізім бойынша бір ғана өтуді жасайды және әр мәнмен ол екінші тізімді айналдырып, мәнді қою үшін дұрыс орын табады. Әдетте, көпіршікті сұрыптау әдісін пайдаланудан тиімдірек.

Бұл жерде алгоритмдер шынымен ақылсыз болуы мүмкін. Немесе шынымен де қызықты, сіз оған қалай қарағаныңызға байланысты.

Көпіршікті сұрыптау әдісі құндылықтарды сұрыптаудың ең тиімсіз әдістерінің бірі болып саналады, ал егер түпнұсқа тізім дұрыс жасалса, көпіршікті сұрыптау ең тиімді болып табылады. Себебі, бұл жағдайда көпіршікті сұрыптау алгоритмі тізімнен бір уақытта өтіп, оны дұрыс сұрыптайды деп шешеді.

Өкінішке орай, біз өзіміздің тізімімізге сәйкес келетінін әрдайым біле бермейміз, сондықтан көптеген тізімдер бойынша орташа есеппен пайдалану үшін ең тиімді болып табылатын алгоритмді таңдау керек.

Көпіршікті сұрыптаудан үйренетін нәрсе

Күнделікті өмірде Facebook алгоритмдері және көбірек

Алгоритмдер күнделікті адамдарға көмектесуде. Вебті іздегенде, алгоритм жақсы іздеу нәтижелерін табуға тырысады. Смартфоннан бағыттар сұраңыз және алгоритм сіз үшін ең жақсы жолды анықтайды. Facebook-да қарап шыққан кезде, алгоритм біздің досымыздың Facebook парақшаларының қайсысы біз үшін аса маңызды деп шешеді. (Біздің достарымыз қандай Facebook-ны бізге ұнайтындығын білмейді деп үміттенеміз!)

Бірақ ойлау алгоритмі бізге компьютерлік өмірден асып түседі. Бұл тіпті жақсы сэндвич салуымызға көмектеседі.

Айталық, екі бөлік наннан бастаймын, бір бөлікке қыша және басқа бөлікке майонезді таратамын. Мен майонезбен ірімшік кесектерін салып, оның үстіне жидек, бірнеше салат, екі бөлікке қызанақ қоямын, содан кейін оны қыша қалығымен кесіп алыңыз. Жақсы сэндвич, дұрыс?

Егер мен оны бірден жеп алсам, анық. Бірақ, мен оны біраз уақыт үстелге қалдырсам, сол жоғарғы бөлікше нанның қызаруы мүмкін. Мен бұл мәселені алдын-ала күтпеген едім, ал мен бірнеше жылдан бері бутербродтар жасай аламын, бірақ бір рет жасайтын болсам, жақсы сэндвич жасау үшін менің алгоритмімді өзгерту жолдарын ойластыра аламын.

Мысалы, қызанақтың құтылуына болады. Бірақ мен бұл томат дәмін жоғалтқым келмейді. Сондықтан, орнына, мен нан мен салат кейін сэндвичке қызанақты қоюға болады. Бұл салатқа қызанақ пен нан арасындағы қорғаныш кедергісін қалыптастыруға мүмкіндік береді.

Алгоритм қалай дамитынды. Алгоритм компьютермен алгоритм болуы керек емес. Алгоритм - бұл процесс, және процестер айналамызда.