Tytuł oryginału: Algorithms For Dummies

30

Transcript of Tytuł oryginału: Algorithms For Dummies

Page 1: Tytuł oryginału: Algorithms For Dummies
Page 2: Tytuł oryginału: Algorithms For Dummies

Tytuł oryginału: Algorithms For Dummies

Tłumaczenie: Radosław Meryk

ISBN: 978-83-283-6076-1

Original English language edition Copyright © 2017 by John Wiley & Sons, Inc., Hoboken, New Jersey.All rights reserved including the right of reproduction in whole in part in any form. This translation published by arrangement with John Wiley & Sons, Inc.

Oryginalne angielskie wydanie © 2017 by John Wiley & Sons, Inc., Hoboken, New Jersey.Wszelkie prawa, włączając prawo do reprodukcji całości lub części w jakiejkolwiek formie, zarezerwowane. Tłumaczenie opublikowane na mocy porozumienia z John Wiley & Sons, Inc.

Translation copyright © 2019 by Helion S.A.

Wiley, the Wiley Publishing logo, For Dummies, Dla Bystrzaków, the Dummies Man logo, Dummies.com, Making Everything Easier and related trade dress are trademarks or registered trademarks of John Wiley and Sons, Inc. and/or its affiliates in the United States and/or other countries. Used under license. All other trademarks are the property of their respective owners.

Wiley, the Wiley Publishing logo, For Dummies, Dla Bystrzaków, the Dummies Man logo, Dummies.com, Making Everything Easier i związana z tym szata graficzna są markami handlowymi John Wiley and Sons, Inc. i/lub firm stowarzyszonych w Stanach Zjednoczonych i/lub innych krajach. Wykorzystywane na podstawie licencji. Wszystkie pozostałe znaki handlowe są własnością ich właścicieli.

Media and software compilation copyright © 2017 by John Wiley & Sons, Inc. All rights reserved.

Autor oraz HELION SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletnei rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz HELION SA nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://dlabystrzakow.pl/user/opinie/algobyMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/algoby.zip

Wydawnictwo HELION ul. Kościuszki 1c, 44-100 Gliwicetel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://dlabystrzakow.pl

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: Tytuł oryginału: Algorithms For Dummies

Spis tre ci 5

Spis tre ciO autorach .......................................................................................15

Podzi kowania od autorów ...........................................................17

Wprowadzenie ................................................................................19

CZ I: ZACZYNAMY .................................................................25

ROZDZIA 1: Wprowadzenie do algorytmów ......................................27Co to jest algorytm? .................................................................................................28

Zastosowania algorytmów ................................................................................30Algorytmy s wsz dzie .......................................................................................32

Stosowanie komputerów do rozwi zywania problemów ...................................33Wykorzystanie nowoczesnych procesorów i procesorów graficznych ........34Wykorzystanie uk adów specjalnych ................................................................35Wykorzystanie sieci ............................................................................................36Wykorzystywanie dost pnych danych .............................................................37

Odró nianie problemów od rozwi za .................................................................38Poprawno a skuteczno ...............................................................................38Nie ma nic za darmo! .........................................................................................39Dostosowanie strategii do problemu ..............................................................39Zrozumia y opis algorytmów .............................................................................39Stawianie czo a trudnym problemom ..............................................................40

Strukturyzacja danych w celu uzyskania rozwi zania ..........................................40Zrozumienie punktu widzenia komputera ......................................................41Uk ad danych robi ró nic .................................................................................41

Poleć książkęKup książkę

Page 4: Tytuł oryginału: Algorithms For Dummies

6 Algorytmy dla bystrzaków

ROZDZIA 2: Projekt algorytmu ............................................................43Rozpocz cie rozwi zywania problemu ..................................................................44

Modelowanie rzeczywistych problemów .........................................................45Znajdowanie rozwi za i kontrprzyk adów .....................................................47Na ramionach olbrzymów .................................................................................48

Dziel i zwyci aj ........................................................................................................48Unikanie rozwi za si owych ............................................................................49Zacznij od uproszczenia .....................................................................................50Rozwi zanie sk adowych problemu zwykle

jest atwiejsze ni rozwi zanie ca ego problemu .........................................50Zach anno mo e by dobra .................................................................................51

Stosowanie zach annego wnioskowania .........................................................51Osi ganie dobrego rozwi zania .......................................................................52

Koszty obliczeniowe i korzystanie z heurystyk .....................................................53Reprezentowanie problemu jako przestrzeni .................................................54Wykonywanie losowych ruchów i liczenie na szcz cie .................................54U ywanie heurystyki i funkcji kosztu ................................................................55

Ocena algorytmów ...................................................................................................56Symulacje z wykorzystaniem maszyn abstrakcyjnych ...................................57Wi cej abstrakcji .................................................................................................58Wykorzystanie funkcji ........................................................................................59

ROZDZIA 3: Wykorzystanie Pythona do pracy z algorytmami ........63Zalety Pythona ..........................................................................................................65

Dlaczego w tej ksi ce korzystamy z Pythona? ...............................................65Korzystanie z MATLAB-a ....................................................................................67Inne rodowiska testowania algorytmów ........................................................68

Dystrybucje Pythona ................................................................................................68Pobieranie rodowiska Anaconda Analytics ....................................................69Enthought Canopy Express ...............................................................................70

rodowisko pythonxy .........................................................................................70WinPython ...........................................................................................................71

Instalowanie Pythona w systemie Linux ................................................................71Instalowanie Pythona w systemie MacOS .............................................................72Instalowanie Pythona w systemie Windows .........................................................74Pobieranie zestawów danych i przyk adowego kodu ..........................................77

Korzystanie ze rodowiska Jupyter Notebook ................................................77Definiowanie repozytorium kodu .....................................................................79Zestawy danych wykorzystywane w tej ksi ce ..............................................84

Poleć książkęKup książkę

Page 5: Tytuł oryginału: Algorithms For Dummies

Spis tre ci 7

ROZDZIA 4: Wprowadzenie do Pythona jako narz dziado programowania algorytmów ....................................87Dzia ania na liczbach i operacje logiczne ..............................................................89

Przypisywanie warto ci do zmiennych ............................................................90Wykonywanie dzia a arytmetycznych ............................................................91Porównywanie danych za pomoc wyra e boolowskich ............................92

Tworzenie ci gów znaków i pos ugiwanie si nimi ..............................................95Dzia ania na datach ..................................................................................................97Tworzenie i stosowanie funkcji ...............................................................................98

Tworzenie funkcji wielokrotnego u ytku .........................................................98Wywo ywanie funkcji ..........................................................................................99

Stosowanie instrukcji warunkowych i p tli .........................................................102Podejmowanie decyzji za pomoc instrukcji if .............................................102Wybór pomi dzy wieloma opcjami z wykorzystaniem decyzji

zagnie d onych ..............................................................................................103Wykonywanie powtarzaj cych si zada za pomoc p tli for ....................104Korzystanie z instrukcji while ..........................................................................105

Przechowywanie danych z wykorzystaniem zbiorów, list i krotek ...................106Tworzenie zbiorów ...........................................................................................106Tworzenie list ....................................................................................................107Tworzenie i u ywanie krotek ...........................................................................108

Definiowanie przydatnych iteratorów .................................................................110Indeksowanie danych z wykorzystaniem s owników .........................................111

ROZDZIA 5: Wykonywanie podstawowych operacjina danych za pomoc Pythona ....................................113Wykonywanie oblicze za pomoc wektorów i macierzy ..................................114

Operacje na warto ciach skalarnych i na wektorach ...................................115Mno enie wektorów .........................................................................................117Najlepiej rozpocz od utworzenia macierzy ................................................118Mno enie macierzy ..........................................................................................119Definiowanie zaawansowanych operacji na macierzach .............................120

W a ciwe tworzenie kombinacji ...........................................................................122Rozró nianie permutacji ..................................................................................122Tasowanie kombinacji ......................................................................................123Obs uga powtórze ..........................................................................................124

Uzyskiwanie po danych wyników za pomoc rekurencji ................................125Co to jest rekurencja? .......................................................................................125Eliminowanie rekurencji wywo a ogonowych .............................................128

Szybsze wykonywanie zada ................................................................................129Dziel i zwyci aj .................................................................................................129Rozró nianie mo liwych rozwi za ................................................................132

Poleć książkęKup książkę

Page 6: Tytuł oryginału: Algorithms For Dummies

8 Algorytmy dla bystrzaków

CZ II: ZNACZENIE SORTOWANIA I WYSZUKIWANIA ........135

ROZDZIA 6: Strukturyzowanie danych ............................................137Niezb dno struktury ..........................................................................................138

atwiejsze ogl danie tre ci ..............................................................................138Dopasowywanie danych z ró nych róde ....................................................139Korygowanie danych ........................................................................................140

Uk adanie danych w stos .......................................................................................143Porz dkowanie z wykorzystaniem stosów ....................................................143Korzystanie z kolejek ........................................................................................145Wyszukiwanie danych z wykorzystaniem s owników ...................................146

Drzewa .....................................................................................................................147Podstawowe wiadomo ci o drzewach ...........................................................147Budowanie drzewa ...........................................................................................148

Reprezentowanie relacji za pomoc grafu ..........................................................150Wi cej ni drzewa .............................................................................................150Budowanie grafów ...........................................................................................151

ROZDZIA 7: Organizowanie i wyszukiwanie danych ......................155Sortowanie z wykorzystaniem algorytmów MergeSort i QuickSort .................156

Dlaczego wa ne jest sortowanie danych? .....................................................156Naiwne sortowanie danych .............................................................................158Lepsze techniki sortowania .............................................................................160

Korzystanie z drzew wyszukiwania i stert ...........................................................164Potrzeba skutecznego wyszukiwania .............................................................165Budowanie drzewa wyszukiwania binarnego ...............................................167Wyspecjalizowane wyszukiwania za pomoc sterty binarnej .....................168

Korzystanie z tablic asocjacyjnych ........................................................................169Pojemniki na dane ............................................................................................169Zapobieganie kolizjom .....................................................................................171Tworzenie w asnej funkcji haszuj cej ............................................................173

CZ III: WIAT GRAFÓW .......................................................175

ROZDZIA 8: Podstawowe informacje o grafach ..............................177Znaczenie sieci ........................................................................................................178

Istota grafu ........................................................................................................178Grafy s wsz dzie .............................................................................................180Spo eczno ciowa strona grafów .....................................................................181Podgrafy ............................................................................................................182

Poleć książkęKup książkę

Page 7: Tytuł oryginału: Algorithms For Dummies

Spis tre ci 9

Definiowanie sposobu rysowania grafu ..............................................................183Rozró nianie kluczowych atrybutów ..............................................................183Rysowanie grafu ...............................................................................................185

Pomiar funkcjonalno ci grafu ...............................................................................186Zliczanie kraw dzi i wierzcho ków ..................................................................186Obliczanie centralno ci ....................................................................................188

Liczbowa reprezentacja grafu ...............................................................................190Dodawanie grafu do macierzy ........................................................................191U ywanie reprezentacji rzadkich ....................................................................192Korzystanie z list do przechowywania grafu .................................................192

ROZDZIA 9: Po cz kropki ..................................................................195Efektywne przechodzenie przez graf ...................................................................196

Tworzenie grafu ................................................................................................197Przeszukiwanie najpierw wszerz ....................................................................198Przeszukiwanie najpierw w g b .....................................................................199Okre lanie, której aplikacji u y ......................................................................202

Sortowanie elementów grafu ...............................................................................202Skierowane grafy acykliczne ............................................................................203Sortowanie topologiczne .................................................................................204

Redukcja do minimalnego drzewa rozpinaj cego .............................................205Wybór odpowiednich algorytmów .................................................................208Kolejki z priorytetami .......................................................................................209Wykorzystanie algorytmu Prima .....................................................................210Testowanie algorytmu Kruskala .....................................................................211Który algorytm dzia a najlepiej? ......................................................................213

Znalezienie najkrótszej trasy ................................................................................214Co to znaczy znale najkrótsz cie k ? .......................................................214Wyja nienie algorytmu Dijkstry ......................................................................216

ROZDZIA 10: Odkrywanie tajemnic grafów .......................................219Sieci spo eczno ciowe jako grafy ..........................................................................220

Klasteryzacja sieci .............................................................................................220Odkrywanie spo eczno ci ................................................................................223

Poruszanie si po grafie ........................................................................................225Zliczanie stopni separacji .................................................................................225Losowe poruszanie si po grafie ....................................................................227

Poleć książkęKup książkę

Page 8: Tytuł oryginału: Algorithms For Dummies

10 Algorytmy dla bystrzaków

ROZDZIA 11: Pobieranie w a ciwej strony internetowej .................229Odkrywanie wiata za pomoc wyszukiwarki .....................................................230

Wyszukiwanie danych w internecie ................................................................230Jak znale w a ciwe dane? ..............................................................................230

Czym jest algorytm PageRank? .............................................................................232Wnioskowanie w algorytmie PageRank .........................................................232Szczegó y dzia ania algorytmu PageRank ......................................................234

Implementacja algorytmu PageRank ...................................................................234Implementacja skryptu Pythona .....................................................................235Rozwi zywanie problemów naiwnej implementacji ....................................238Nuda i teleportacja ...........................................................................................240Jak dzia a wyszukiwarka? .................................................................................242Inne zastosowania algorytmu PageRank .......................................................242

Nie tylko paradygmat PageRank ..........................................................................243Zapytania semantyczne ...................................................................................243Stosowanie technik AI do tworzenia rankingu wyników wyszukiwania .....244

CZ IV: ZMAGANIA Z BIG DATA ...........................................245

ROZDZIA 12: Zarz dzanie obszernymi zbiorami danych .................247Przekszta canie mocy obliczeniowej w dane ......................................................248

Implikacje prawa Moore’a ...............................................................................249Dane s wsz dzie .............................................................................................251Zastosowanie algorytmów w biznesie ...........................................................253

Strumieniowy przep yw danych ...........................................................................255Analiza strumieni z wykorzystaniem odpowiednich receptur ....................256Rezerwowanie w a ciwych danych .................................................................257

Szkicowanie odpowiedzi z danych strumienia ...................................................261Filtrowanie elementów strumienia „na pami ” ...........................................262Przyk ad filtra Blooma ......................................................................................264Znajdowanie liczby ró nych elementów ........................................................267Zliczanie obiektów w strumieniu ....................................................................269

ROZDZIA 13: Wspó bie ne wykonywanie operacji ...........................271Zarz dzanie ogromnymi ilo ciami danych ..........................................................272

Paradygmat przetwarzania równoleg ego .....................................................272Dystrybucja plików i operacji ..........................................................................275Zastosowanie rozwi zania MapReduce .........................................................277

Algorytmy dla techniki MapReduce .....................................................................280Konfigurowanie symulacji MapReduce ..........................................................281Zapytanie przez mapowanie ...........................................................................283

Poleć książkęKup książkę

Page 9: Tytuł oryginału: Algorithms For Dummies

Spis tre ci 11

ROZDZIA 14: Kompresja danych .........................................................287Zmniejszenie rozmiaru danych ............................................................................288

Kodowanie .........................................................................................................288Efekty kompresji ...............................................................................................290Wybór rodzaju kompresji ................................................................................291Dobór kodowania .............................................................................................293Kodowanie za pomoc kompresji Huffmana ................................................295Zapami tywanie sekwencji za pomoc LZW .................................................297

CZ V: TRUDNE PROBLEMY .................................................303

ROZDZIA 15: Algorytmy zach anne ....................................................305Kiedy lepiej jest by zach annym? ........................................................................306

Dlaczego zach anno mo e by dobra? .......................................................307Zarz dzanie algorytmami zach annymi .........................................................308Problemy NP-zupe ne ......................................................................................310

Dlaczego zach anno mo e by po yteczna? ....................................................312Organizacja danych z wykorzystaniem pami ci podr cznej komputera ...312Rywalizacja o zasoby ........................................................................................314Kodowanie Huffmana raz jeszcze ...................................................................316

ROZDZIA 16: Programowanie dynamiczne ........................................321Zasady programowania dynamicznego ..............................................................322

Baza historyczna ...............................................................................................322Zmiana problemów na dynamiczne ...............................................................323Dynamiczne rzutowanie rekurencji ................................................................325Wykorzystanie memoizacji ..............................................................................327

Najlepsze procedury programowania dynamicznego .......................................329Co jest w plecaku? ............................................................................................330Zwiedzanie miast ..............................................................................................333Przybli one wyszukiwanie ci gów znaków ....................................................338

ROZDZIA 17: Korzystanie z algorytmów losowych ...........................341Jak dzia a randomizacja? .......................................................................................342

Dlaczego randomizacja jest potrzebna? ........................................................343Czym jest prawdopodobie stwo? ..................................................................344Rozk ady prawdopodobie stwa .....................................................................345Symulacja u ycia metody Monte Carlo ..........................................................348

Wykorzystanie losowo ci w logice algorytmu .....................................................350Obliczanie mediany za pomoc algorytmu Quickselect ..............................350Symulacja przy u yciu algorytmu Monte Carlo .............................................353Szybsze sortowanie dzi ki algorytmowi Quicksort ......................................355

Poleć książkęKup książkę

Page 10: Tytuł oryginału: Algorithms For Dummies

12 Algorytmy dla bystrzaków

ROZDZIA 18: Wyszukiwanie lokalne ...................................................357Co to jest wyszukiwanie lokalne? .........................................................................358

Znajomo s siedztwa .....................................................................................358Sztuczki stosowane w wyszukiwaniu lokalnym ..................................................361

Problem wspinaczki z n-królowymi ................................................................362Symulowane wy arzanie .................................................................................364Unikanie powtórze przy u yciu przeszukiwania tabu ................................366

Rozwi zywanie warunku spe nialno ci uk adów logicznych .............................367Rozwi zywanie problemu 2-SAT z wykorzystaniem randomizacji .............368Implementacja kodu w Pythonie ....................................................................369Lepszy punkt wyj cia ........................................................................................371

ROZDZIA 19: Wykorzystanie programowania liniowego .................375Stosowanie funkcji liniowych jako narz dzia ......................................................376

Podstawy matematyczne .................................................................................377Upraszczanie podczas planowania .................................................................379Geometria w metodzie simplex ......................................................................379Ograniczenia .....................................................................................................381

Programowania liniowe w praktyce .....................................................................382Konfigurowanie modu u PuLP ........................................................................383Optymalizacja produkcji i przychodów ..........................................................383

ROZDZIA 20: Heurystyka .....................................................................389Klasyfikacja heurystyk ............................................................................................390

Cele heurystyki ..................................................................................................390Od genetyki do sztucznej inteligencji .............................................................391

Sterowanie robotem za pomoc heurystyki .......................................................392Skauting w nieznanym terenie ........................................................................393Wykorzystanie miar odleg o ci jako heurystyki ............................................394

Algorytmy wyszukiwania cie ki ...........................................................................395Tworzenie labiryntu ..........................................................................................396Szybkie wyszukiwanie najlepszej trasy ..........................................................398Poruszanie si heurystyczne z wykorzystaniem algorytmu A* ...................402

Poleć książkęKup książkę

Page 11: Tytuł oryginału: Algorithms For Dummies

Spis tre ci 13

CZ VI: DEKALOGI .................................................................407

ROZDZIA 21: Dziesi algorytmów, które zmieni y wiat ................409Korzystanie z procedur sortowania .....................................................................410Poszukiwanie informacji z wykorzystaniem procedur wyszukiwania ..............411Zmienianie sytuacji za pomoc liczb losowych ...................................................411Kompresja danych .................................................................................................412Zachowanie poufno ci danych .............................................................................412Zmiana dziedziny danych ......................................................................................413Analiza powi za w danych ..................................................................................413Wykrywanie wzorców w danych ...........................................................................414Automatyzacja i automatyczne odpowiedzi .......................................................415Tworzenie unikatowych identyfikatorów ............................................................415

ROZDZIA 22: Dziesi problemów algorytmicznychdo rozwi zania ...............................................................417Obs uga wyszukiwania tekstu ...............................................................................418Rozró nianie s ów ..................................................................................................418Ustalenie, czy aplikacja si zako czy ...................................................................419Tworzenie i stosowanie funkcji jednokierunkowych .........................................419Mno enie bardzo du ych liczb .............................................................................420Równy podzia zasobów ........................................................................................420Skrócenie czasu obliczania odleg o ci edycji ......................................................421Szybkie rozwi zywanie problemów .....................................................................421Gra w gr parzysto ci ............................................................................................422Zrozumienie problemów przestrzennych ...........................................................422

Skorowidz .......................................................................423

Poleć książkęKup książkę

Page 12: Tytuł oryginału: Algorithms For Dummies

14 Algorytmy dla bystrzaków

Poleć książkęKup książkę

Page 13: Tytuł oryginału: Algorithms For Dummies

ROZDZIA 1 Wprowadzenie do algorytmów 27

Co rozumiemy przez algorytm?

Wykorzystywanie komputerów dodostarczania rozwi za za pomocalgorytmów

Ustalenie ró nic pomi dzy problemamia rozwi zaniami

Operowanie na danych w celuznalezienia rozwi za

Rozdzia

Wprowadzeniedo algorytmów

e li jeste podobny do wi kszo ci ludzi, zapewne poczujesz si zagubiony,otwieraj c t ksi k i rozpoczynaj c przygod z algorytmami. W tekstachdotycz cych algorytmów przewa nie bowiem nie wspomina si , czym s al-

gorytmy, a tym bardziej po co si ich u ywa. W wi kszo ci tekstów zak ada si ,e ju czytelnik co wie o algorytmach i czyta o nich po to, aby wzbogaci swoj

wiedz . Co ciekawe, niektóre ksi ki wprowadzaj myl c definicj algorytmu,która w zasadzie go nie definiuje, a czasem nawet uto samia z jak inn formabstrakcyjnego, liczbowego lub symbolicznego wyra enia.

Pierwsza cz tego rozdzia u ma za zadanie pomóc Ci zrozumie , co to jest al-gorytm i dlaczego znajomo algorytmów jest przydatna. Algorytmy nie s wie-dz tajemn — u ywa si ich wsz dzie. Prawdopodobnie korzystasz z nich odlat, wcale o tym nie wiedz c. Algorytmy s kr gos upem, który wspiera i regulujeto, co jest wa ne w coraz bardziej z o onym i technicznym spo ecze stwie.

W tym rozdziale przybli amy tak e, jak wykorzystywa komputery do tworzeniarozwi za problemów przy u yciu algorytmów, jak rozró nia problemy od roz-wi za oraz jak operowa danymi, aby znale rozwi zanie. Celem tego rozdzia u

J

W TYM ROZDZIALE:

Poleć książkęKup książkę

Page 14: Tytuł oryginału: Algorithms For Dummies

28 CZ I Zaczynamy

jest pomoc w odró nieniu algorytmów od innych zada , które ludzie wykonuji które myl z algorytmami. Krótko mówi c, w tym rozdziale odkryjesz, do czegos Ci potrzebne algorytmy i jak je zastosowa do danych.

Co to jest algorytm?Chocia ludzie stosowali algorytmy r cznie przez tysi ce lat, takie podej cie po-ch ania ogrom czasu i wymaga wielu oblicze numerycznych, w zale no ci odz o ono ci problemu, który chcemy rozwi za . Algorytmy dotycz znajdowaniarozwi za — im szybciej i atwiej, tym lepiej. Istnieje ogromna luka mi dzy al-gorytmami matematycznymi historycznie stworzonymi przez geniuszy swoichczasów, takich jak Euklides, Newton czy Gauss, a nowoczesnymi algorytmamiopracowanymi na uniwersytetach i w prywatnych laboratoriach badawczo-rozwojowych. G ównym powodem tej luki jest wykorzystanie komputerów. Ichstosowanie do rozwi zywania problemów za pomoc odpowiednich algorytmówpozwala znacznie szybciej wykonywa zadania. W a nie dlatego — od czasówpojawienia si pot nych systemów komputerowych — rozwój nowych algoryt-mów post puje tak szybko. Prawdopodobnie zauwa y e , e wspó cze nie poja-wia si coraz wi cej rozwi za problemów. Cz ciowo wynika to st d, e mocobliczeniowa komputerów jest zarówno tania, jak i stale ro nie. Komputery (cza-sami w postaci specjalnego sprz tu) staj si wszechobecne w a nie z powoduich zdolno ci do rozwi zywania problemów przy u yciu algorytmów.

Podczas pracy z algorytmami bierze si pod uwag dane wej ciowe, po dane danewynikowe i proces (ci g dzia a ) prowadz cy do uzyskania po danego wynikuna podstawie danych wej ciowych. Mo esz jednak le zrozumie terminologii niew a ciwie postrzega algorytmy, poniewa nigdy nie zastanawia e si nadtym, jak w rzeczywisto ci dzia aj . W trzecim podrozdziale tego rozdzia u omó-wili my algorytmy w wiecie rzeczywistym, to znaczy dokonali my przegl duterminologii stosowanej w celu zrozumienia algorytmów i zaprezentowali myalgorytmy w sposób, który dowodzi, e rzeczywisty wiat jest cz sto daleki od do-skona o ci. Umiej tno realistycznego opisania algorytmu pozwala tak e z agodzioczekiwania wobec algorytmów i odzwierciedli rzeczywisty stan tego, co faktycz-nie mo na za ich pomoc osi gn .

Ta ksi ka prezentuje algorytmy na wiele sposobów. Poniewa jednak dostarczaopisu sposobu, w jaki algorytmy si zmieniaj i wzbogacaj ycie ludzi, koncen-truje si na algorytmach wykorzystywanych do przetwarzania danych z u yciemkomputerów. To one dostarczaj wymaganej mocy obliczeniowej. Maj c to nauwadze, algorytmy, z którymi pracujesz w tej ksi ce, wymagaj wprowadzaniadanych w okre lonej formie, co czasami oznacza modyfikowanie danych w celuich dopasowania do wymaga algorytmu. Przetwarzanie danych nie zmienia ichzawarto ci. Zmienia jedynie prezentacj i form danych. Dzi ki temu algorytmymog pomóc Ci zauwa y nowe wzorce — takie, które wcze niej nie by y widoczne(cho wyst powa y w danych przez ca y czas).

Poleć książkęKup książkę

Page 15: Tytuł oryginału: Algorithms For Dummies

ROZDZIA 1 Wprowadzenie do algorytmów 29

ród a informacji o algorytmach cz sto przedstawiaj je w sposób, który jestmyl cy — zbyt wyrafinowany lub wr cz niepoprawny. W tej ksi ce u yto na-st puj cych definicji dla terminów, które ludzie cz sto myl z algorytmami:

Równanie — liczby i symbole, które w ca o ci s równe okre lonej warto ci.Równanie zawsze zawiera znak równo ci, dzi ki czemu wiemy, e liczbyi symbole reprezentuj okre lon warto po drugiej stronie znaku równo ci.Równania na ogó zawieraj zmienne informacje zaprezentowanew symbolicznej formie, cho nie musz u ywa zmiennych.

Wzór (formu a) — po czenie liczb i symboli stosowane do wyra enia informacjilub poj . Wzory zazwyczaj przedstawiaj poj cia matematyczne lub logiczne,takie jak definiowanie najwi kszego wspólnego dzielnika (NWD) dwóch liczbca kowitych (aby dowiedzie si , co to jest, mo na obejrze film dost pnypod adresem https://www.khanacademy.org/math/in-sixth-grade-math/playing--numbers/highest-common-factor/v/greatest-common-divisor). Ogólnie rzecz bior c,wzory pokazuj zwi zek pomi dzy co najmniej dwiema zmiennymi. Wi kszoosób uwa a wzory za specjalny rodzaj równa .

Algorytm — sekwencja dzia a zmierzaj cych do rozwi zania problemu.Sekwencja przedstawia unikatow metod podej cia do problemu poprzezdostarczenie konkretnego rozwi zania. Algorytm nie musi reprezentowa pojmatematycznych lub logicznych. Algorytmy zaprezentowane w tej ksi ce cz stonale jednak do tej kategorii, poniewa ludzie przewa nie stosuj algorytmyw taki sposób. Niektóre specjalne wzory, na przyk ad równania kwadratowe,to tak e algorytmy. Aby proces reprezentowa algorytm, musi by :

Sko czony — algorytm musi prowadzi do rozwi zania problemu.W tej ksi ce omawiamy problemy ze znanymi rozwi zaniami, dzi kiczemu mo emy oceni , czy algorytm rozwi zuje problem poprawnie.

ci le zdefiniowane — sekwencja kroków musi by precyzyjna i musiprzedstawia kroki w sposób zrozumia y. Poniewa w wykorzystanie algorytmus zaanga owane komputery, musz one by w stanie zrozumie krokizmierzaj ce do stworzenia u ytecznego algorytmu.

Skuteczny — algorytm musi uwzgl dnia wszystkie przypadki problemu, dlaktórego kto go zdefiniowa . Algorytm powinien zawsze rozwi zywa problem,do którego rozwi zania jest przeznaczony. Nawet je li przewidujemy jakieawarie, cz sto awarii powinna by niska. Awarie wyst puje tylko w sytuacjach,które s dopuszczalne dla zamierzonego u ycia algorytmu.

W dalszych podrozdzia ach staramy si opisa natur algorytmów z uwzgl dnie-niem powy szych definicji. Celem nie jest zapewnienie precyzyjnej definicji al-gorytmów, ale raczej pomoc w zrozumieniu ich istoty, dzi ki czemu b dziesz w stanierozwija w asne rozumienie tego, czym s algorytmy i dlaczego s tak wa ne.

Poleć książkęKup książkę

Page 16: Tytuł oryginału: Algorithms For Dummies

30 CZ I Zaczynamy

Zastosowania algorytmówAlgorytm zawsze prezentuje sekwencj kroków, cho niekoniecznie wykonuje tekroki w celu rozwi zania matematycznego równania. Zakres algorytmów jestniewiarygodnie du y. Istniej algorytmy, które rozwi zuj problemy w nauce,medycynie, finansach, produkcji przemys owej, a tak e logistyce i komunikacji.Algorytmy zapewniaj wsparcie dla wszystkich aspektów codziennego ycia. Zaka dym razem, gdy sekwencja dzia a , które do czego prowadz , jest sko czona,dobrze zdefiniowana i skuteczna, mo emy postrzega j jako algorytm. Na przyk admo esz przekszta ci w algorytm nawet co tak trywialnego i prostego jak przy-gotowanie tostu. Procedura przygotowywania tostów cz sto pojawia si na lekcjachinformatyki. Taki opis mo na znale na stronie http://brianaspinall.com/now-thats--how-you-make-toast-using-computer-algorithms/.

Niestety algorytm zaprezentowany na tej stronie jest wadliwy. Instruktor nigdynie wyjmuje tostu z opakowania i nigdy nie wk ada go do tostera, w wynikuczego powstaje uszkodzona kromka wci w opakowaniu w niedzia aj cym tosterze(szczegó owe informacje mo na znale na stronie http://blog.johnmuellerbooks.com/2013/03/04/procedures-in-technicalwriting/). Mimo e koncepcja jest popraw-na, to aby algorytm by sko czony i skuteczny, wymaga pewnych drobnych, alekoniecznych zmian.

Jednym z najcz stszych zastosowa algorytmów jest rozwi zywanie wzorów. Naprzyk ad NWD dwóch liczb ca kowitych mo na obliczy r cznie. W tym celu nale ypoda wszystkie dzielniki obu liczb ca kowitych, a nast pnie wybra najwi kszydzielnik, który jest dla nich wspólny. Na przyk ad NWD(20, 25) wynosi 5, ponie-wa 5 jest najwi ksz liczb b d c dzielnikiem zarówno liczby 20, jak i 25.R czne obliczanie ka dego NWD (co w istocie jest rodzajem algorytmu) to jednakproces czasoch onny i stwarzaj cy okazje do pope nienia b dów. Z tych powo-dów grecki matematyk Euklides (https://pl.wikipedia.org/wiki/Euklides) stworzyalgorytm do wykonania tego zadania. Z metod Euklidesa mo na zapozna si nastronie https://www.khanacademy.org/computing/computerscience/cryptography/modari--thmetic/a/the-euclidean-algorithm.

Pojedynczy wzór, który jest prezentacj symboli i liczb u ywanych do wyra eniainformacji lub poj , mo e mie wiele rozwi za . Ka de z nich jest algorytmem.W przypadku NWD innym popularnym algorytmem jest algorytm Lehmera (zobaczhttps://www.imsc.res.in/~kapil/crypto/notes/node11.html i https://en.wikipedia.org/wiki/Lehmer%27s_GCD_algorithm). Poniewa ka dy wzór mo na rozwi za na wielesposobów, cz sto sp dzamy du o czasu, porównuj c algorytmy — aby znaletaki algorytm, który najlepiej sprawdza si w okre lonej sytuacji (zobacz porówna-nie algorytmów Euklidesa i Lehmera pod adresem http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.31.693&rep=rep1&type=pdf).

Poniewa nasze spo ecze stwo i towarzysz ca mu technologia nabieraj corazwi kszego tempa, potrzebujemy algorytmów, które potrafi to tempo utrzyma .W naszych czasach mo liwe sta y si takie osi gni cia naukowe jak sekwencjo-

Poleć książkęKup książkę

Page 17: Tytuł oryginału: Algorithms For Dummies

ROZDZIA 1 Wprowadzenie do algorytmów 31

nowanie ludzkiego genomu dzi ki temu, e naukowcy znale li algorytmy dzia-aj ce wystarczaj co szybko, aby wykona to zadanie. Zmierzenie, który algo-

rytm jest lepszy w danej sytuacji lub w przeci tnej sytuacji u ytkownika, to na-prawd powa ny problem i temat do dyskusji w ród informatyków.

W informatyce ten sam algorytm mo e mie wiele postaci. Na przyk ad algorytmEuklidesa mo na zaprezentowa zarówno w sposób rekurencyjny, jak i iteracyjny,co obja niono na stronie http://cs.stackexchange.com/questions/1447/what-is-most--efficient-for-gcd. Ogólnie rzecz bior c, algorytmy przedstawiaj metod rozwi zy-wania wzorów. B dem by oby jednak stwierdzenie, e istnieje tylko jeden ak-ceptowalny algorytm dla danego wzoru lub e istnieje tylko jedna akceptowalnaposta algorytmu. Wykorzystywanie algorytmów do rozwi zywania ró nego ro-dzaju problemów ma d ug histori — to nie jest co , co w a nie si wydarzy o.

Nawet je li ograniczysz swoje poszukiwania do informatyki, in ynierii danych,sztucznej inteligencji i innych dziedzin technicznych, znajdziesz wiele rodzajówalgorytmów — zbyt wiele jak na jedn ksi k . Na przyk ad ksi ka The Art of Com-puter Programming Donalda E. Knutha (Addison-Wesley) ma 3168 stron w czterechtomach (zobacz http://www.amazon.com/exec/obidos/ASIN/0321751043/datacservip0f-20/) i mimo to nie jest w stanie wyczerpa tematu (autor zamierza napisa wi cejtomów). Oto kilka interesuj cych zastosowa algorytmów:

Wyszukiwanie — znajdowanie informacji lub sprawdzanie, czy informacje,które widzimy, s potrzebne, to zadanie o podstawowym znaczeniu. Bez takichmechanizmów nie by oby mo liwe wykonanie wielu zada w trybie online,takich jak na przyk ad znalezienie strony internetowej oferuj cej idealnydzbanek do kawy do Twojego biura.

Sortowanie — ustalenie kolejno ci, w jakiej wykorzystujemy informacje,jest bardzo wa ne. Dla wielu osób nat ok informacji to du y problem,a uporz dkowanie ich jest jednym ze sposobów na zmniejszenie nap ywudanych. Prawdopodobnie b d c dzieckiem, nauczy e si , e kiedy utrzymywa eporz dek w zabawkach, atwiej by o Ci je znale i pobawi si t zabawk , któraCi akurat interesowa a, ni wtedy, gdy zabawki by y porozrzucane po ca ymdomu. Wyobra sobie, e wchodzisz do serwisu Amazon i dowiadujesz si , e masprzeda y ponad tysi c dzbanków do kawy i nie mo esz posortowa ich wed ugceny lub najbardziej pozytywnej opinii. Co wi cej, wiele z o onych algorytmówwymaga danych w odpowiedniej kolejno ci do niezawodnego dzia ania, dlategosortowanie jest wa nym wymogiem dla rozwi zania wielu problemów.

Przekszta canie — konwersja jednego rodzaju danych na inny rodzaj danychma kluczowe znaczenie dla ich efektywnego zrozumienia i wykorzystania. Naprzyk ad mo esz dobrze rozumie wag w skali brytyjskiej, ale we wszystkichTwoich ród ach jest stosowany system metryczny. Konwersja pomi dzy tymidwoma systemami pomaga je zrozumie . Podobnie szybka transformata Fouriera(FFT) przekszta ca sygna y pomi dzy domen czasu a domen cz stotliwo ci,dzi ki czemu mo liwe staje si dzia anie takich urz dze jak router wi-fi.

Poleć książkęKup książkę

Page 18: Tytuł oryginału: Algorithms For Dummies

32 CZ I Zaczynamy

Szeregowanie — doprowadzenie do sprawiedliwego podzia u zasobów przezwszystkie zainteresowane podmioty to kolejny obszar, w którym algorytmyznacz co ujawniaj swoj obecno . Na przyk ad synchronizacja wiate naskrzy owaniach nie sprowadza si ju tylko do odliczania sekund pomi dzyzmianami wiate . Nowoczesne urz dzenia uwzgl dniaj wiele czynników, takichjak pora dnia, warunki pogodowe czy nat enie ruchu. Szeregowanie ma jednakwiele postaci. Na przyk ad zastanów si , w jaki sposób komputer wykonujejednocze nie wiele zada . Bez algorytmu szeregowania system operacyjnymóg by pobra wszystkie dost pne zasoby i uniemo liwi aplikacji wykonaniepo ytecznej pracy.

Analiza grafów — wybór najkrótszej drogi pomi dzy dwoma punktami znajdujewiele ró nych zastosowa . Na przyk ad bez tego konkretnego algorytmu niemog aby funkcjonowa nawigacja GPS, poniewa nie potrafi aby skierowa Cipo ulicach miasta przy u yciu najkrótszej trasy z punktu A do punktu B.

Kryptografia — utrzymywanie bezpiecze stwa danych to nieustanna walkaz hakerami stale atakuj cymi ród a danych. Algorytmy umo liwiaj analizdanych, ich transformacj do okre lonej postaci, a nast pnie powrót do postacipierwotnej.

Generowanie liczb pseudolosowych — wyobra sobie, e grasz w gry, którenigdy si nie zmieniaj . Przy ka dej rozgrywce zaczynasz w tym samym miejscui w ten sam sposób wykonujesz te same kroki. Bez mo liwo ci generowaniapozornie losowych liczb realizacja wielu komputerowych zada sta aby siniemo liwa.

Powy sza lista to bardzo krótki przegl d zastosowa algorytmów. Algorytmówu ywa si do rozwi zywania wielu ró nych zada i na wiele ró nych sposobów.Stale powstaj nowe algorytmy do rozwi zania zarówno istniej cych, jak i no-wych problemów. Najwa niejsz kwesti , któr nale y uwzgl dni w pracy z al-gorytmami, jest to, e przy danym wej ciu nale y oczekiwa okre lonego wyj cia.Problemy drugorz dne to ilo zasobów, których algorytm wymaga do wykona-nia swojego zadania, oraz czas potrzebny do jego wykonania. W zale no ci odrodzaju problemu i rodzaju zastosowanego algorytmu mo e by równie ko-nieczne uwzgl dnienie kwestii dok adno ci i spójno ci.

Algorytmy s wsz dzieW poprzednim podrozdziale nieprzypadkowo wspomnieli my algorytm przygo-towywania tostów. Z jakiego powodu robienie tostów jest jednym z najpopular-niejszych algorytmów, jakie kiedykolwiek powsta y. Wielu uczniów szkó po-nadgimnazjalnych pisze odpowiedniki algorytmu przygotowywania tostów nad ugo przed tym, zanim rozwi najbardziej podstawowe zadanie z matematyki.Nietrudno sobie wyobrazi , jak wiele odmian algorytmu tostowego istnieje i jakie

Poleć książkęKup książkę

Page 19: Tytuł oryginału: Algorithms For Dummies

ROZDZIA 1 Wprowadzenie do algorytmów 33

s wyniki ka dego z nich. Prawdopodobnie wyniki s ró ne w zale no ci od osobyi poziomu kreatywno ci. Krótko mówi c, algorytmy pojawiaj si w du ej ró -norodno ci, cz sto w nieoczekiwanych miejscach.

Algorytmy wykorzystuje si we wszystkich zadaniach wykonywanych na kom-puterach. Niektóre algorytmy s elementami sprz tu komputerowego (s wbu-dowane, dlatego cz sto mówimy o wbudowanych mikroprocesorach). Sam procesuruchamiania komputera obejmuje u ycie algorytmu. Algorytmy s wykorzysty-wane równie w systemach operacyjnych, aplikacjach i ka dym innym oprogra-mowaniu. Nawet u ytkownicy polegaj na algorytmach. Skrypty pomagaj u yt-kownikom wykonywa zadania w okre lony sposób, ale te same kroki mog mieposta pisemnych instrukcji lub tworzy strategi organizacji.

Codzienne czynno ci cz sto zmieniaj si w algorytmy. Pomy l o tym, jak sp -dzasz dzie . Zazwyczaj, jak wi kszo ludzi, wykonujesz ka dego dnia te samezadania w tej samej kolejno ci. W zwi zku z tym Twój dzie staje si algoryt-mem, który rozwi zuje problem wygodnego ycia przy u yciu mo liwie jak naj-mniejszej ilo ci energii. W ko cu w a nie taki cel spe nia rutyna — czyni nasskutecznymi.

Na algorytmach cz sto bazuj procedury awaryjne. Instrukcj post powaniaw sytuacjach awaryjnych wyjmujesz z kieszeni znajduj cego si przed Tob fotelaw samolocie. Ma ona posta serii piktogramów pokazuj cych, jak otworzy drzwiawaryjne i wysun awaryjn zje d alni . Niekiedy algorytmy nie zawieraj nawets ów. Same rysunki ilustruj procedur wymagan do wykonania zadania i roz-wi zania problemu awaryjnego wysiadania z samolotu. W tej ksi ce dla ka degoalgorytmu zobaczymy te same trzy elementy:

1. Opisz problem.

2. Utwórz ci g (dobrze zdefiniowanych) kroków prowadz cych do rozwi zaniaproblemu.

3. Wykonaj te kroki, aby uzyska po dany rezultat (sko czony i skuteczny).

Stosowanie komputerówdo rozwi zywania problemów

S owo komputer brzmi do technicznie i mo e by nieco przyt aczaj ce dla nie-których osób. Wspó czesny cz owiek tkwi jednak w komputerach „po uszy” (a bymo e nawet g biej). Przez wi kszo czasu masz przy sobie przynajmniej jedenkomputer — Twój smartfon. Je li masz jakie specjalne urz dzenie, na przyk adrozrusznik serca, ono tak e zawiera komputer. Twój telewizor zawiera co naj-mniej jeden komputer. W komputery s równie wyposa one „inteligentne”urz dzenia AGD. Samochód mo e zawiera nawet 30 komputerów — maj one

Poleć książkęKup książkę

Page 20: Tytuł oryginału: Algorithms For Dummies

34 CZ I Zaczynamy

posta wbudowanych mikroprocesorów steruj cych zu yciem paliwa, emisjspalin, dzia aniem skrzyni biegów i uk adu kierowniczego oraz stabilno ci(zobacz artyku z „New York Timesa” dost pny na stronie http://www.nytimes.com/2010/02/05/technology/05electronics.html) — i wi cej wierszy kodu ni od-rzutowy my liwiec. Pojawiaj ce si na rynku motoryzacyjnym samochody auto-nomiczne b d jeszcze bardziej wymaga y wbudowanych mikroprocesorów i algo-rytmów o jeszcze wi kszej z o ono ci. Komputer s u y do szybkiego rozwi zywaniaproblemów i z mniejszym wysi kiem ni w przypadku rozwi zywania ich r cz-nie. Dlatego nie powinno Ci dziwi , e w tej ksi ce jeszcze bardziej wykorzystu-jemy komputery po to, aby lepiej zrozumie algorytmy.

Komputery ró ni si na wiele sposobów. Komputer w zegarku jest do ma y —ten, który znajduje si na Twoim biurku, jest stosunkowo du y. Superkompu-tery s ogromne i sk adaj si z wielu mniejszych komputerów — wszystkieone wspó pracuj ze sob podczas rozwi zywania z o onych problemów, takichjak opracowywanie prognozy pogody na jutro. Najbardziej z o one algorytmybazuj na specjalnych funkcjonalno ciach komputerów. Za ich pomoc uzysku-jemy rozwi zania problemów, do których rozwi zywania te funkcjonalno cizaprojektowano. To prawda, e mo na zu y mniejsze zasoby, aby wykona zada-nie, ale kosztem uzyskania odpowiedzi po znacznie d u szym czasie lub uzyska-nia odpowiedzi, która nie jest wystarczaj co dok adna, by by a u ytecznym roz-wi zaniem. W niektórych przypadkach na odpowied czekamy tak d ugo, ew momencie jej uzyskania nie jest ona ju wa na. Bior c pod uwag zarównoszybko , jak i dok adno , w poni szych punktach omówili my kilka specjal-nych w asno ci komputera, które mog mie wp yw na algorytmy.

Wykorzystanie nowoczesnych procesorówi procesorów graficznych

Procesory ogólnego przeznaczenia — CPU — powsta y jako mechanizmy dorozwi zywania problemów z wykorzystaniem algorytmów. Jednak z ich uniwer-salnego charakteru wynika równie to, e procesory mog wykonywa wiele in-nych zada , takich jak na przyk ad przenoszenie danych lub interakcje z urz -dzeniami zewn trznymi. Procesory ogólnego przeznaczenia maj wiele zalet,co oznacza, e mog wykonywa kroki potrzebne do realizacji algorytmu, choniekoniecznie szybko. W a ciciele wczesnych procesorów ogólnego przeznacze-nia mogli dodatkowo instalowa w swoich systemach koprocesory matematycz-ne (specjalne uk ady s u ce do wykonywania dzia a arytmetycznych). Dzi kitemu mogli zyska wi ksz szybko dzia ania (wi cej informacji mo na znalena stronie http://www.computerhope.com/jargon/m/mathcopr.htm). Obecnie proce-sory ogólnego przeznaczenia maj wbudowany koprocesor matematyczny, zatemkiedy kupujesz procesor Intel i7, w rzeczywisto ci otrzymujesz wiele procesoróww jednym pakiecie.

Poleć książkęKup książkę

Page 21: Tytuł oryginału: Algorithms For Dummies

ROZDZIA 1 Wprowadzenie do algorytmów 35

Co ciekawe, Intel nadal wprowadza na rynek specjalne dodatki do procesorów, takiejak procesor Xeon Phi u ywany z uk adami Xeon (wi cej informacji mo na znalena stronach http://www.intel.com/content/www/us/en/processors/xeon/xeon-phi-detail.

html i https://en.wiki2.org/wiki/Intel_Xeon_Phi). Uk ad Xeon Phi wraz z uk ademXeon s u y do wykonywania zada wymagaj cych du ej mocy obliczeniowej, ta-kich jak uczenie maszynowe (szczegó owe informacje o tym, jak uczenie maszy-nowe wykorzystuje algorytmy do ustalenia sposobu wykonywania ró nych zadawspomagaj cych u ycie danych oraz do przewidywania nieznanych informacjii porz dkowania ich tak, by na ich podstawie wyci ga sensowne wnioski, mo naznale w ksi ce Johna Muellera i Luki Massarona Machine Learning For Dummies).

By mo e zastanawiasz si , dlaczego w tym punkcie wspominamy o procesorachgraficznych (GPU). W ko cu GPU maj pobiera dane, w specjalny sposób jeprzetwarza , a nast pnie wy wietla na ekranie estetyczny obraz. Ka dy sprz tkomputerowy mo e s u y do wi cej ni jednego celu. Okazuje si , e procesoryGPU s szczególnie wydajne w transformacjach danych, co w wielu przypadkachjest jednym z najwa niejszych zada przy rozwi zywaniu algorytmów. GPU toprocesory specjalnego przeznaczenia, które maj w a ciwo ci umo liwiaj ceszybsze wykonywanie algorytmów. Nie powinno nikogo dziwi , e osoby, któreopracowuj algorytmy, sp dzaj du o czasu na my leniu. W zwi zku z tym cz stoznajduj sposoby rozwi zywania problemów za pomoc nietradycyjnych metod.

Chodzi o to, e CPU i GPU to najcz ciej u ywane uk ady do wykonywania zadazwi zanych z algorytmami. Pierwsze ca kiem dobrze wykonuj zadania ogólnegoprzeznaczenia, natomiast drugie specjalizuj si w zapewnieniu obs ugi zadawymagaj cych intensywnych oblicze matematycznych — zw aszcza tych, którewymagaj transformacji danych. Korzystanie z wielu rdzeni umo liwia prze-twarzanie równoleg e (wykonywanie wi cej ni jednego kroku algorytmu naraz).Dodanie wielu uk adów zwi ksza liczb dost pnych rdzeni. Posiadanie wi kszejliczby rdzeni zwi ksza szybko , ale z powodu wielu czynników zysk szybko cinie jest liniowy: u ycie w systemie dwóch uk adów i7 nie spowoduje podwojeniaszybko ci w porównaniu z systemem wyposa onym tylko w jeden uk ad i7.

Wykorzystanie uk adów specjalnychKoprocesor matematyczny i procesor graficzny to dwa przyk ady popularnychuk adów specjalnych — takich, które nie s u ywane do wykonywania zadaogólnych, na przyk ad adowania systemu. Algorytmy cz sto jednak wymagaju ycia nietypowych uk adów specjalnych do rozwi zywania problemów. Niniej-sza ksi ka nie jest o sprz cie. Warto jednak po wi ci troch czasu, aby si ro-zejrze i zauwa y wiele interesuj cych uk adów, takich jak nowe sztuczne neurony,nad którymi pracuje IBM (zobacz histori na stronie http://www.computerworld.com/article/3103294/computer-processors/ibm-creates-artificial-neurons-from-phase-change--memory-for-cognitive-computing.html). Wyobra sobie algorytmiczne przetwarza-nie z wykorzystaniem pami ci, która symuluje ludzki mózg. By oby to interesu-j ce rodowisko do wykonywania zada , których wykonanie bez takiego rodzajupami ci nie by oby dzisiaj mo liwe.

Poleć książkęKup książkę

Page 22: Tytuł oryginału: Algorithms For Dummies

36 CZ I Zaczynamy

Sieci neuronowe, technologia wykorzystywana do symulacji my li cz owieka i umo -liwiaj ca stosowanie technik uczenia g bokiego w scenariuszach uczenia maszy-nowego, korzystaj obecnie z wyspecjalizowanych uk adów scalonych, takich jakTesla P100 firmy NVidia (aby pozna szczegó y, zobacz artyku na stronie https://www.technologyreview.com/s/601195/a-2-billionchip-to-accelerate-artificial-intelligence/).Tego rodzaju uk ady nie tylko wykonuj niezwykle szybkie przetwarzanie algo-rytmiczne, ale ucz si , jak wykonywa zadania, dzi ki czemu s szybsze przyka dej kolejnej iteracji. Komputery ucz ce si w ko cu zaczn by instalowanew robotach, które b d mog y same si porusza , podobnie jak roboty zapre-zentowane w filmie Ja, robot (jeden z takich robotów zosta opisany na stroniehttp://www.cbsnews.com/news/this-creepy-robot-is-powered-by-a-neuralnetwork/).Istniej równie specjalne uk ady, które wykonuj takie zadania jak rozpoznawanieobrazów (szczegó owe informacje mo na znale na stronie https://www.technolo--gyreview.com/s/537211/a-better-way-tobuild-brain-inspired-chips/).

Niezale nie od tego, jak dzia aj procesory specjalizowane, w ko cu zostan onewykorzystane do wykonywania wszystkich rodzajów algorytmów, co b dziemia o konsekwencje w wiecie rzeczywistym. Wiele z tych rzeczywistych aplika-cji w stosunkowo prostej formie mo na znale ju dzi . Na przyk ad wyobrasobie zadania, które musia by rozwi za robot do pizzy — zmienne, które mu-sia by przetwarza w czasie rzeczywistym. Takie roboty ju istniej (jest to tylkojeden przyk ad wielu robotów przemys owych wykorzystywanych do produkcjidóbr materialnych przy u yciu algorytmów). Mo na za o y , e jego dzia aniebazuje na algorytmach, które opisuj co robi , a tak e na specjalnych uk adach,dzi ki którym zadania s wykonywane szybko (zobacz artyku na stronie http://www.bloomberg.com/news/articles/2016-06-24/inside-silicon-valley-s-robot-pizzeria).

By mo e kiedy powstanie mo liwo wykorzystania w roli procesora ludzkiegoumys u i wyprowadzenia informacji przez specjalny interfejs. Istniej firmy,które eksperymentuj z umieszczaniem procesorów bezpo rednio w ludzkimmózgu, aby zwi kszy jego zdolno do przetwarzania informacji (zobacz artykuna stronie ,https://www.washingtonpost.com/news/the-switch/wp/2016/08/15/putting--a-computer-in-your-brainis-no-longer-science-fiction/). Wyobra sobie system,w którym ludzie mog stosowa algorytmy z szybko ci komputerów, ale z kre-atywnym potencja em „co je li” charakterystycznym dla ludzi.

Wykorzystanie sieciJe li Twoje fundusze nie s nieograniczone, skuteczne wykorzystanie niektórychalgorytmów mo e by niemo liwe, nawet przy u yciu specjalistycznych uk adów.W takim przypadku istnieje mo liwo po czenia komputerów w sie . Dzi kiwykorzystaniu specjalnego oprogramowania jeden komputer — tzw. master —mo e u ywa procesorów wszystkich komputerów podrz dnych z uruchomio-nym agentem (rodzajem aplikacji uruchomionej w tle, która udost pnia proce-sor). Korzystaj c z tego podej cia, mo na rozwi za z o one problemy poprzezprzekazanie cz ci problemu do wielu komputerów podrz dnych. W miar jakka dy komputer w sieci rozwi zuje swoj cz problemu, przesy a wyniki z po-

Poleć książkęKup książkę

Page 23: Tytuł oryginału: Algorithms For Dummies

ROZDZIA 1 Wprowadzenie do algorytmów 37

wrotem do mastera, który scala elementy w celu stworzenia skonsolidowanejodpowiedzi. Taka technika nazywa si przetwarzaniem w klastrze (ang. clustercomputing).

Nie jest to bynajmniej temat science fiction. Obecnie ludzie u ywaj technik obli-cze w klastrze na wiele interesuj cych sposobów. Na przyk ad w artykule na stro-nie http://www.zdnet.com/article/build-your-own-supercomputer-out-ofraspberry-pi-boards/ zawarto szczegó owe informacje o tym, jak zbudowa w asny super-komputer poprzez po czenie w klaster wielu mikrokontrolerów Raspberry Pi(zobacz stron https://www.raspberrypi.org/).

Popularna jest tak e technologia przetwarzania rozproszonego — innej wersji ob-licze klastrowych (ale z lu niejsz organizacj ). List projektów, w których za-stosowano przetwarzanie rozproszone, mo na znale na stronie http://www.distributioncomputing.info/projects.html. W ród nich jest kilka wa nych przedsi -wzi , takich jak wyszukiwanie inteligencji pozaziemskiej (projekt SETI). Mo-esz tak e przekaza swoj moc obliczeniow komputera do pracy nad lekiem na

raka. Lista potencjalnych projektów jest niezwyk a.

Sieci umo liwiaj równie dost p do mocy obliczeniowej innych komputeróww formie niezwi zanej. Na przyk ad mechanizmy do korzystania z komputeróww celu wykonywania w asnej pracy zapewnia us uga Amazon Web Services(AWS), a tak e inni dostawcy. Dzi ki po czeniu sieciowemu u ytkownicy mogodnosi wra enie, e komputery zdalne nale do ich w asnej sieci. Chodzi o wyko-rzystanie sieci na ró ne sposoby do tworzenia po cze mi dzy komputerami w celurozwi zywania ró nych algorytmów, które by yby zbyt skomplikowane, aby jerozwi za za pomoc tylko jednego systemu.

Wykorzystywanie dost pnych danychCz zada zwi zanych ze stosowaniem algorytmu nie ma nic wspólnego z mocobliczeniow , twórczym my leniem lub z czymkolwiek o fizycznym charakterze.Aby stworzy rozwi zanie wi kszo ci problemów, potrzebne s równie dane, naktórych mo na oprze swoje wnioski. Na przyk ad w algorytmie do przygotowy-wania tostów, zanim faktycznie rozwi esz problem robienia tostów, musiszwiedzie , czy jest dost pny chleb, toster, pr d elektryczny do zasilania tostera i takdalej. Dane te staj si wa ne, poniewa nie mo na uko czy algorytmu, gdy bra-kuje cho by jednego elementu wymaganego rozwi zania. Oczywi cie mog bytak e potrzebne dodatkowe dane wej ciowe. Na przyk ad osoba, która robi tost,mo e nie lubi ytniego pieczywa. Je li tak jest, a mamy tylko ytni chleb dodyspozycji, to pomimo dost pno ci chleba nadal nie uzyskamy pomy lnego wyniku.

Dane pochodz z ró nych róde i mog mie bardzo ró ne formaty. Mo eszprzesy a dane ze ród a takiego jak monitor czasu rzeczywistego, strumienio-wo, si ga do publicznego ród a danych, korzysta z prywatnych danych w ba-zie danych, pobiera dane ze stron internetowych za pomoc techniki scrapingulub uzyskiwa je niezliczonymi sposobami — zbyt wieloma, by je tutaj wymieni .

Poleć książkęKup książkę

Page 24: Tytuł oryginału: Algorithms For Dummies

38 CZ I Zaczynamy

Dane mog by statyczne (niezmienne) lub dynamiczne (stale si zmieniaj ce).Mo e si okaza , e dane s kompletne lub brakuje im kilku elementów. Danemog mie nieodpowiedni form (na przyk ad waga jest wyra ona w jednost-kach skali brytyjskiej, a s potrzebne jednostki metryczne). Dane mog mie po-sta tabelaryczn w sytuacji, gdy s potrzebne w innej formie. Mog by nie-uporz dkowane (na przyk ad w bazie danych NoSQL lub po prostu w wieluró nych plikach danych), a my potrzebujemy formalnego formatowania w a ci-wego dla relacyjnej bazy danych. Krótko mówi c, aby rozwi zywa problemy zapomoc algorytmu, musisz zna bardzo wiele ró nych danych.

Poniewa dane wyst puj w bardzo wielu formach i trzeba z nimi pracowa nawiele sposobów, w tej ksi ce przywi zuje si do danych olbrzymi wag . Po-cz wszy od rozdzia u 6., dowiesz si , jak rol odgrywa struktura danych. W roz-dziale 7. poka emy, w jaki sposób przeszukiwa dane, aby znale to, co jest po-trzebne. W rozdzia ach od 12. do 14. omawiamy sposoby pracy z du ymi zbioramidanych. Jednak w ka dym rozdziale ksi ki mo na znale pewne informacjespecyficzne dla danych. Bez danych algorytm nie jest w stanie rozwi za ad-nych problemów.

Odró nianie problemów od rozwi zaW tej ksi ce omawiamy dwie cz ci algorytmicznego widoku rzeczywistegowiata. Z jednej strony mamy problemy do rozwi zania. Problem mo e opisywa

po dany wynik algorytmu lub przeszkod , któr nale y pokona , aby uzyskapo dany wynik. Rozwi zania to metody lub kroki stosowane w celu rozwi zaniaproblemów. Rozwi zanie mo e dotyczy tylko jednego kroku lub wielu krokóww algorytmie. Rozwi zanie to wynik algorytmu, czyli odpowied na jego ostatnikrok. Niektóre wa ne aspekty problemów i rozwi za zrozumiesz dzi ki lekturzezamieszczonych poni ej punktów.

Poprawno a skutecznoKorzystanie z algorytmów polega na uzyskaniu akceptowalnej odpowiedzi. Szu-kamy akceptowalnej odpowiedzi dlatego, e niektóre algorytmy w odpowiedzi narozmyte dane wej ciowe generuj wi cej ni jedn odpowied . W yciu nie zawszejest mo liwe uzyskanie precyzyjnych odpowiedzi. Oczywi cie precyzyjna odpo-wied zawsze jest celem, ale cz sto trzeba si zadowoli odpowiedzi akceptowaln .

Uzyskanie jak najdok adniejszej odpowiedzi mo e zaj du o czasu. Gdy otrzy-masz precyzyjn odpowied , ale nadejdzie ona zbyt pó no, aby mo na by o z niejskorzysta , informacje stan si bezu yteczne, zatem tylko straci e czas. Wybórpomi dzy dwoma algorytmami, które dotycz tego samego problemu, mo esprowadzi si do wyboru pomi dzy szybko ci a precyzj . Szybki algorytmmo e nie generowa precyzyjnej odpowiedzi, ale odpowied nadal mo e bywystarczaj co dobra, by dostarcza u ytecznych danych wyj ciowych.

Poleć książkęKup książkę

Page 25: Tytuł oryginału: Algorithms For Dummies

ROZDZIA 1 Wprowadzenie do algorytmów 39

B dne odpowiedzi mog generowa problemy. Szybkie tworzenie wielu b d-nych odpowiedzi jest tak samo z e jak powolne tworzenie wielu precyzyjnychodpowiedzi. W pewnym sensie celem tej ksi ki jest pomoc w znalezieniu „z o-tego rodka” pomi dzy odpowiedziami udzielanymi zbyt szybko i zbyt wolnooraz niedok adnymi i zbyt dok adnymi. Nawet je li nauczyciel matematyki naci-ska na dostarczanie prawid owych odpowiedzi w sposób, jaki by opisany w pod-r czniku, którego u ywa e w szkole, matematyka w wiecie rzeczywistym cz -sto wi e si z dokonywaniem wyborów i podejmowaniem kompromisowychdecyzji. Czasami maj one na nas zaskakuj cy wp yw.

Nie ma nic za darmo!By mo e s ysza e popularny mit, e komputer mo e obliczy ka dy wynik, niewk adaj c zbyt wielkiego wysi ku w opracowanie rozwi zania. Niestety nie istniejeabsolutne rozwi zanie ka dego problemu, a lepsze odpowiedzi s cz sto dokosztowne. Podczas pracy z algorytmami atwo si przekonasz, e do uzyskaniaszybszych i bardziej precyzyjnych odpowiedzi potrzebne s dodatkowe zasoby.Rozmiar i z o ono róde danych, z których korzystasz, równie znacz co wp y-waj na dok adno rozwi zania. Wraz ze wzrostem rozmiaru i z o ono ci pro-blemu wzrasta ilo zasobów potrzebnych do jego rozwi zania.

Dostosowanie strategii do problemuW cz ci V tej ksi ki omawiamy strategie, których mo na u y , aby zmniejszykoszty pracy z algorytmami. Najlepsi matematycy stosuj sztuczki, aby uzyskawi cej wyników z wykorzystaniem mniejszej liczby komputerów. Mo na naprzyk ad stworzy z o ony algorytm rozwi zania problemu lub u y wielu prost-szych algorytmów, aby rozwi za ten sam problem za pomoc wielu procesorów.Wiele prostych algorytmów zwykle dzia a szybciej i lepiej ni pojedynczy z o onyalgorytm, nawet je li to podej cie wydaje si sprzeczne z intuicj .

Zrozumia y opis algorytmówAlgorytmy stanowi podstaw komunikacji mi dzy lud mi, nawet je li osoby temaj ró ne perspektywy i mówi ró nymi j zykami. Na przyk ad twierdzenieBayesa (prawdopodobie stwo wyst pienia zdarzenia przy danych przes ankach —zwi z y opis tego niesamowitego twierdzenia mo na znale na stronie https://betterexplained.com/articles/an-intuitive-andshort-explanation-of-bayes-theorem/):

P(B|E) = P(E|B)*P(B)/P(E)

wygl da tak samo bez wzgl du na to, czy mówisz po polsku, angielsku, hisz-pa sku, chi sku, niemiecku, francusku czy w dowolnym innym j zyku. Nieza-le nie od tego, w jakim j zyku mówisz, przy takich samych danych wej ciowychalgorytm wygl da tak samo i dzia a tak samo. Algorytmy pomagaj przekracza

Poleć książkęKup książkę

Page 26: Tytuł oryginału: Algorithms For Dummies

40 CZ I Zaczynamy

wszelkiego rodzaju podzia y pomi dzy lud mi, poniewa umo liwiaj wyra aniepoj w postaci, któr ka dy mo e udowodni . Przegl daj c t ksi k , odkryjeszpi kno i magi stosowania algorytmów do przekazywania innym nawet bardzosubtelnych my li.

Oprócz uniwersalnych notacji matematycznych algorytmy wykorzystuj j zykiprogramowania jako sposób wyja niania i komunikowania rozwi zywanychprzez siebie wzorów. Implementacje algorytmów s dost pne w C, C ++, Javie,Fortranie, Pythonie (tak jak w tej ksi ce), a tak e w innych j zykach. Niektórzyautorzy korzystaj z pseudokodu, bo dzi ki temu mo na zapobiec problemomzwi zanym z prezentowaniem algorytmu w j zyku, który nie wszyscy znaj .Pseudokod to sposób opisywania operacji na komputerze przy u yciu opisowegoj zyka.

Stawianie czo a trudnym problemomWa n kwesti podczas pracy z algorytmami jest mo liwo stosowania ich dorozwi zywania problemów o dowolnej z o ono ci. Algorytm nie my li, nie maemocji ani nie obchodzi go, w jaki sposób go u ywasz (a nawet nadu ywasz).Mo esz u ywa algorytmów w dowolny sposób wymagany do rozwi zania pro-blemu. Na przyk ad grupa algorytmów wykorzystywanych do rozpoznawaniatwarzy (stosowana jako alternatywa dla komputerowych hase ) mo e si przy-czyni do ujawnienia czaj cych si na lotnisku terrorystów lub znalezienia w -druj cego po ulicach zagubionego dziecka. Ten sam algorytm ma ró ne zastoso-wania. Sposób jego wykorzystania zale y od zainteresowa u ytkownika. Jednymz powodów, dla których warto uwa nie przeczyta t ksi k , jest pomoc w roz-wi zaniu trudnych problemów, które mog wymaga jedynie prostego algorytmu.

Strukturyzacja danychw celu uzyskania rozwi zania

Ludzie my l o danych w niespecyficzny sposób. Stosuj do tych samych danychró ne regu y i rozumiej je w sposób, którego komputery nie potrafi . Komputerwidzi dane w sposób ustrukturyzowany, prosty, bezkompromisowy i zdecydo-wanie niekreatywny. Gdy ludzie przygotowuj dane do wykorzystania przezkomputer, te dane cz sto wchodz w nieoczekiwane interakcje z algorytmami i po-woduj niepo dane rezultaty. Problem polega na tym, e cz owiek nie dostrzegaogranicze postrzegania danych w sposób charakterystyczny dla komputera. W po-ni szych punktach opisujemy dwa aspekty danych zilustrowane w wielu rozdzia ach.

Poleć książkęKup książkę

Page 27: Tytuł oryginału: Algorithms For Dummies

ROZDZIA 1 Wprowadzenie do algorytmów 41

Zrozumienie punktu widzenia komputeraKomputer postrzega dane w prosty sposób, a jednocze nie w taki, którego ludziezazwyczaj nie rozumiej . Zacznijmy od tego, e dla komputera wszystkie dane sliczbami. Komputery nie potrafi dzia a z danymi adnego innego rodzaju. Lu-dzie widz znaki na ekranie komputera i zak adaj , e komputer przetwarza da-ne, korzystaj c ze znaków. Komputer nie rozumie jednak danych ani wynikaj -cych z nich implikacji. Litera A dla komputera to po prostu liczba 65. W a ciwie niejest to nawet liczba 65. Komputer „widzi” ci g impulsów elektrycznych równychwarto ci binarnej 0100 0001.

Komputery nie rozumiej równie poj cia wielkich i ma ych liter. Dla cz owiekama a litera a to po prostu inna forma wielkiej litery A, ale dla komputera s to dwieró ne litery. Ma a litera a to dla komputera liczba 97 (warto binarna 0110 0001).

Je li te proste porównania pojedynczych liter mog powodowa takie problemypomi dzy lud mi a komputerami, nietrudno wyobrazi sobie, co si dzieje, gdyludzie zaczynaj tworzy za o enia dotycz ce innych danych. Na przyk adkomputer nie potrafi s ysze muzyki ani si ni zachwyca . Pomimo to muzykap ynie z g o ników komputera. To samo dotyczy grafiki. Zamiast grafiki przed-stawiaj cej pi kn sceneri krajobrazu komputer widzi ci g zer i jedynek.

Podczas korzystania z algorytmów wa ne jest postrzeganie danych z perspekty-wy komputera. Komputer widzi tylko zera i jedynki, nic wi cej. W konsekwencji,kiedy zaczynasz analizowa algorytmy, musisz postrzega dane w taki sam spo-sób. Warto wiedzie , e postrzeganie danych w taki sposób, w jaki widzi je kompu-ter, sprawia, e niektóre rozwi zania staj si atwiejsze, a nie trudniejsze doznalezienia. Wi cej informacji na temat tej osobliwo ci uzyskasz, przegl daj cdane w dalszej cz ci tej ksi ki.

Uk ad danych robi ró nicKomputery maj równie cis e poj cie o formacie i strukturze danych. Kiedyzaczniesz pracowa z algorytmami, przekonasz si , e znacz ca cz zadaniapolega na wy wietlaniu danych w formacie, którego komputer mo e u y pod-czas korzystania z algorytmu po to, by znale rozwi zanie problemu. Chociacz owiek potrafi widzie wzorce w danych, które nie s dok adnie u o one, to abykomputery znalaz y ten sam wzorzec, wymagaj danych w precyzyjnej postaci.Dzi ki tej precyzji komputery mog odkrywa nowe wzorce. Jest to jeden z g ów-nych powodów stosowania algorytmów w komputerach — aby zlokalizowa no-we wzorce i u y tych wzorców do wykonywania innych zada . Na przyk adkomputer mo e rozpozna wzorzec wydatków klienta, a nast pnie wykorzystate informacje do zwi kszenia sprzeda y.

Poleć książkęKup książkę

Page 28: Tytuł oryginału: Algorithms For Dummies

42 CZ I Zaczynamy

Poleć książkęKup książkę

Page 30: Tytuł oryginału: Algorithms For Dummies