alqoritm
| proqramlama13,295 | 10 | 34
əjdahalar googlla
back-end developer materialları - youtube - tiktok - spotify - 9-cu mərtəbədən pomidorun qiymətini soruşan xala - proqramlaşdırma öyrənmək üçün online mənbələr - sözlük yazarlarının peşmanlıqları - alqoritmik - shadow ban
Yalnız deyilsən!
Bu duyğuların müvəqqəti olduğunu və kömək mövcud olduğunu bilmək vacibdir. Dostlarınıza, ailənizə, profesionallara müraciət etməyiniz vacibdir. Sizi dinləmək və lazım olan dəstəyi təmin etmək istəyən insanlar var.
Sözlük yazarları olaraq səni hər zaman dinləyə bilərik.
Əgər yalnız hiss edirsənsə, qaynar xəttə zəng et:
☎ 860Alqoritm kobudca izah etsəm, məsələnin həllinə yönəlik məntiqi əməliyyatlar ardıcıllığı deyə bilərik.
Kompüter elmlərində alqoritm nəyə deyildiyi barəsində çox danışmayacam, sadəcə onu deyə bilərəm ki, ən məşhur yanaşma buna dayanır:
"Turing machine teorik olaraq həll edə biləcəyi məsələlərin mütləq alqoritmik həlli var."
Turing machine adını Alan Turingdən götürüb. Alan Turing kompüter elmlərinin atası sayılır. Adam 2-ci Dünya Müharibəsində Enigma və buna əlavə olunan Lorenz SZ 40/42 şifrələmə maşınını deşifrə etməklə adından söz etdirmişdir.
Benedict Cumberbatchın oynadığı "The imitation game" də elə həmin mövzuda da çəkilib.
link
Qeyd: öyrəndiyim elmin atasının gay olması qozuma da deyil.
Mövzudan çox yayınmayaq, qayıdaq alqoritmamıza. Alqoritmik sistemi acizanə də olsa aşağıdakı kimi göstərə bilərəm.
Input/Verilənlər __________ System __________ Output /Nəticə
-------------------------> | xxxxxxxxxxxxxxxxx |---------->
Giriş dəyərləri -------> | xxxx Alqoritm xxxxx |----------> çıxış dəyərləri
-------------------------> | xxxxxxxxxxxxxxxxx |---------->
Alqoritmin alqoritm olması üçün aşağıdakı şərtləri ödəməlidir:
+Alqoritm sonlu sayda mərhələdən sonra qurtarmalıdır. Buna, alqoritmin sonluluq xassəsi deyilir.
+Alqoritmin hər bir addımı dəqiq və birqiymətli təyin olunmalıdır. Bu alqoritmin müəyyənlik xassəsidir.
+ Müəyyən formata uyğun başlanğıc verilənlər olmalıdır, müəyyən formata uyğun çıxış dəyərləri istənməlidir.
Alqoritmlərin müxtəlif cür təsvir üsulları var:
+Mətn: məktəbdəki həll etdiyimiz məsələlər, yemək reseptləri
+Qrafik | Blok şəklində: Control Flow Graph/Kontrol akış çizelgesi. Bunlarla alqoritmanın əməliyyatlar axını ardıcıllığını kağız üstündə göstərmək üçün adətən istifadə olunur.
+Cədvəl: Verilənləri -Çıxış dəyərlərini, əməliyyatları cədvələ salmaqla həlli göstərirlər. Verilənləri daha aydın görmək üçün əla üsuldur.
+Proqram: proqramlaşdırma dillərində həlli kodlayaraq daha sonra maşın koduna çevirməklə məsələni həll etmək.
Ada Lovelace motor haqqında notlarında bir maşın tərəfindən işlənən alqoritmden bəhs edilir. Məhz ona əsaslanıb ilk proqramçının qadın olduğu iddia edilir.
https://www.hackerrank.com/
(youtube:
)
https://basecamp.eolymp.com/az/problems
(bax: eratosfen xəlbiri)
Sadə izah
Təsəvvür et ki, iki ədədin var: 48 və 18. Bunların ən böyük ortaq bölənini (ƏBOB) tapmaq istəyirsən, yəni hər ikisini qalıqsız bölən ən böyük ədədi.
Addım-addım belə işləyir:
Böyük ədədi kiçiyə böl, qalığa bax. Sonra kiçik ədədi həmin qalığa böl. Qalıq 0 olanda, sonuncu bölən -- cavabdır.
Nümunə: ƏBOB(48, 18)
48 ÷ 18 = 2, qalıq 12 → indi 18 və 12 ilə davam edirik
18 ÷ 12 = 1, qalıq 6 → indi 12 və 6 ilə davam edirik
12 ÷ 6 = 2, qalıq 0 → Dayandıq!
Cavab: 6. Yəni 48 və 18-in hər ikisini bölən ən böyük ədəd 6-dır.
Həyatdan analogiya: Təsəvvür et ki, 48 metrlik və 18 metrlik iki ip parçan var. Bunları israf etmədən eyni uzunluqda ən böyük parçalara kəsmək istəyirsən. Evklid alqoritmi sənə deyir ki, hər parçanı 6 metrlik hissələrə kəssən, heç bir artıq qalmaz — 48-dən 8 parça, 18-dən 3 parça alırsan.
Niyə işləyir? Əsas məntiq budur: əgər bir ədəd həm a-nı, həm b-ni bölürsə, o zaman a − b fərqini də (və ya a ÷ b qalığını da) mütləq bölür. Buna görə hər addımda ədədlər kiçilir, amma ƏBOB heç vaxt itmir — ta ki cavab üzə çıxana qədər.
Təsəvvür et, e.ə. 1700-cü il, Babil. Sən kəndlisən. Sənə deyirlər: "Sahəsi 2 kvadrat metr olan kvadrat torpaq veririk. Get ölç, hasarla." Hasarlamaq üçün tərəfi bilməlisən. Tərəf = √2. Amma sən "kvadrat kök" bilmirsən — əlində sadəcə ip və ağıl var.
Necə edərsən?
Deyirsən: "Görəsən tərəf 1 metrdir?" Yoxlayırsan: 1 × 1 = 1. Az çıxdı. "Bəlkə 2-dir?" 2 × 2 = 4. Çox oldu. Deməli cavab 1 ilə 2 arasındadır.
Bax, babillilər burada dahiyanə bir şey görmüşdülər. Bu gün "Babil metodu" (Babylonian method) adı ilə tanınan bu üsulun məntiqi sadədir: əgər sənin təxminin (x) kiçikdirsə, onda sahəni təxminə böldükdə (S/x) böyük ədəd çıxır. Biri böyük, biri kiçik — həqiqi cavab ortadadır. Ortanı götür, daha yaxşı təxmin alar:
Yeni təxmin = (x S/x) / 2
√2 üçün yoxlayaq:
Başlanğıc: x = 1
1-ci addım: (1 2/1) / 2 = 1.5
2-ci addım: (1.5 2/1.5) / 2 = 1.4167
3-cü addım: (1.4167 2/1.4167) / 2 = 1.4142
Həqiqi cavab 1.41421356... — cəmi 3 addımda demək olar ki, dəqiq nəticə. Sadəcə bölmə və toplama ilə.
Babillilər bunu gil lövhələr üzərində yazıb saxlayıblar (e.ə. 1800–1600). Maraqlısı budur: 3000 il sonra isaak Nyuton ümumi iterativ həll metodu yaradanda, babililərin bu üsulu onun metodunun xüsusi halı oldu. Yəni babillilər formal riyaziyyat bilmədən, intuitiv şəkildə eyni prinsipə gəlib çıxmışdılar.
üzv ol