SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
Алгоритмы            Перебор                   Рекурсия                 References




            Алгоритмы. Перебор и рекурсия.

                               Информатика
                               10-11 классы


                           4 декабря 2011 г.




            Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                   Перебор                   Рекурсия                 References



Что такое алгоритм?

            Алгоритм это конечный набор правил, который
            определяет последовательность операций для решения
            конкретного множества задач и обладает пятью важными
            чертами: конечность, определённость, ввод, вывод,
            эффективность (Д. Кнут).
            Основные свойства алгоритма:
             1   Дискретность последовательное выполнение простых
                 шагов.
             2   Детерменированность определённость одинаковые
                 исходные данные дают одинаковый результат.
             3   Понятность.
             4   Конечность количество шагов должно быть конечно
                 (может быть и неявно задано).
             5   Универсальность алгоритм должен работать для
                 множества исходных данных.

                   Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                   Перебор                   Рекурсия                 References



Виды алгоритмов



       1    Динамическое программирование (было).
       2    Метод перебора.
       3    Рекурсия (повторение через себя). Рекурсия                 это
            рекурсия.
       4    Жадные алгоритмы (хватай сначала самое большое).
       5    Разделяй и властвуй (привет, принцип 3 ветвей власти).
       6    Метод двоичного поиска.
       7    Много–много других.




                   Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                      Перебор                      Рекурсия                References



Метод перебора
            Идея метода перебора очень проста переберём все
            варианты и выберем только те, которые нам нужны.
            Рассмотрим простую задачу: вывести на экран простые
            числа <= N.
            Есть красивые решения типа решета Эратосфена. Но мы
            пойдём “в лоб”.

     Listing 1: Простые числа
            def is_prime ?( n )
              r e t u r n f a l s e i f ( ( n == 1 ) | | ( n == 0 ) )
              f o r i i n 2 . . ( n−1)
                  r e t u r n f a l s e i f ( n%i == 0 )
              end
              true
            end

            100. times {| i | puts i       i f is_prime ?( i ) }

                      Информатика 10-11 классы     Алгоритмы. Перебор и рекурсия.
Алгоритмы                  Перебор                   Рекурсия                 References



Метод перебора: НОД

            Рассмотрим задачу: найти НОД(a,b).
            Пример: НОД(15,12) = 3
            Решаем методом перебора.
            Переберём все возможные делители этих двух чисел.
            Для этого пройдёмся циклом от 2 до, например, a.
            Если оба числа делятся на пробегаемое число, значит,
            пробегаемое число делитель. Запоминаем его.
            Если в результате работы программы мы находим
            делитель, который больше запомненного ранее, то стираем
            старый и записываем новый.
            Изначально зададим НОД = 1 (на 1 все числа делятся).
            НОД по-английски         gcd.

                  Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                   Перебор                   Рекурсия                 References



Метод перебора: НОД

     Listing 2: НОД двух чисел a и b

            def gcd ( a , b )
              max = 1
              for i in 2 . . a
                max = i i f ( ( a%i ==0) && ( b%i ==0))
              end
              max
            end

            a = 126
            b = 486

            p u t s gcd ( a , b )

                   Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                  Перебор                   Рекурсия                 References



Задачи на метод перебора


            Задача 1. Дано некоторое число a. Вывести на экран все
            числа, которые взаимно просты с a и не превышают N. N
            задаётся также в начале программы.
            Пример: a = 3, N = 10. Программа должна вывести
            следующие числа: 2, 4, 5, 7, 8, 10.
            Задача 2. Вывести на экран все пары взаимно простых
            чисел, каждое из которых не превышает N. N задаётся в
            начале программы.
            Пример: N = 5. Программа должна вывести: (2,3), (2,5),
            (3,4), (3,5), (4,5).



                  Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы            Перебор                   Рекурсия                 References



Рекурсия




                  Рис.: Источник: http://ru.wikipedia.org


            Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы            Перебор                   Рекурсия                 References



Рекурсия




                  Рис.: Источник: http://ru.wikipedia.org
            Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                   Перебор                   Рекурсия                 References



Рекурсия

            Рекурсия это рекурсия.
            Рекурсия это когда функция использует сама себя.
            Пример рекурсии числа Фибоначчи. Для того, чтобы
            посчитать 10 число Фибоначчи, нужно знать 8 и 9. А
            чтобы узнать их, нужно знать 2 их предыдущих и так
            далее.
            У рекурсии всегда есть две составляющие:
             1   База до какого момента спускаемся. В случае чисел
                 Фибоначчи база это нулевое и первое числа, которые
                 равны 1.
             2   Рекуррентная формула формула, которая говорит, как
                 получить что-то из предыдущего. Для чисел Фибоначчи
                 это: число Фибоначчи равно сумме двух предыдущих
                 (ϕn = ϕn−1 + ϕn−2 )
            Рекурсия может быть медленной.
                   Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                         Перебор                          Рекурсия               References



Числа Фибоначчи: рекурсия


            Напишем функцию для вычисления n–ного числа
            Фибоначчи через рекурсию.
            (!) Сравните по времени, сколько вычисляется 50-е число
            Фибоначчи рекурсией и обычным циклом.

     Listing 3: Рекурсия для чисел Фибоначчи
            def f i b o n a c c i ( n )
              r e t u r n 1 i f ( ( n==0) | | ( n==1))
              f i b o n a c c i ( n−1)+ f i b o n a c c i ( n−2)
            end

            puts f i b o n a c c i (10)




                       Информатика 10-11 классы          Алгоритмы. Перебор и рекурсия.
Алгоритмы                  Перебор                   Рекурсия                 References



Легенда о Ханойских башнях

            Легенда гласит, что в Великом храме города Бенарас, под
            собором, отмечающим середину мира, находится
            бронзовый диск, на котором укреплены 3 алмазных
            стержня, высотой в один локоть и толщиной с пчелу.
            Давным-давно, в самом начале времён, монахи этого
            монастыря провинились перед богом Брахмой.
            Разгневанный, Брахма воздвиг три высоких стержня и на
            один из них возложил 64 диска. Брахма поместил на один
            из стержней 64 диска из чистого золота, причем так, что
            каждый меньший диск лежит на большем.
            Как только все 64 диска будут переложены со стержня, на
            который Брахма сложил их при создании мира, на другой
            стержень, башня вместе с храмом обратятся в пыль и под
            громовые раскаты погибнет мир.

                  Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы            Перебор                   Рекурсия                 References



Задача о ханойских башнях




                  Рис.: Источник: http://ru.wikipedia.org




            Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                    Перебор                   Рекурсия                 References



Задача о ханойских башнях

            Пример простого решения рекурсией без понимания
            работы алгоритма задача о ханойских башнях.
            Даны три стержня, на один из которых нанизаны
            несколько колец, причем кольца отличаются размером и
            лежат меньшее на большем. Задача состоит в том, чтобы
            перенести пирамиду из восьми колец за наименьшее число
            ходов. За один раз разрешается переносить только одно
            кольцо, причём нельзя класть большее кольцо на меньшее.
            Пример алгоритма для 3 колец: с 1 на 3, с 1 на 2, с 3 на 2,
            с 1 на 3, с 2 на 1, с 2 на 3, с 1 на 3.
            Задача 1. Написать программу с использованием рекурсии, которая
            выводит на экран алгоритм решения задачи для заданного количества
            колец.
            Задача 2. Посчитать и объяснить, сколько минимально потребуется
            монахам времени, чтобы выполнить условие Брахмы. Предположим, что на
            1 перекладывание монахи тратят 1 минуту.

                    Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                   Перебор                   Рекурсия                 References



References




            Все презентации доступны на http://school.smirik.ru!
            Вопросы, предложения, д/з: smirik@gmail.com




                   Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.

Weitere ähnliche Inhalte

Was ist angesagt?

ディープボルツマンマシン入門
ディープボルツマンマシン入門ディープボルツマンマシン入門
ディープボルツマンマシン入門Saya Katafuchi
 
[DL輪読会]Deep Learning 第9章 畳み込みネットワーク
[DL輪読会]Deep Learning 第9章 畳み込みネットワーク[DL輪読会]Deep Learning 第9章 畳み込みネットワーク
[DL輪読会]Deep Learning 第9章 畳み込みネットワークDeep Learning JP
 
機械学習プロフェッショナルシリーズ輪読会 #5 異常検知と変化検知 Chapter 1 & 2 資料
機械学習プロフェッショナルシリーズ輪読会 #5 異常検知と変化検知 Chapter 1 & 2 資料機械学習プロフェッショナルシリーズ輪読会 #5 異常検知と変化検知 Chapter 1 & 2 資料
機械学習プロフェッショナルシリーズ輪読会 #5 異常検知と変化検知 Chapter 1 & 2 資料at grandpa
 
Hidden Markov Model - The Most Probable Path
Hidden Markov Model - The Most Probable PathHidden Markov Model - The Most Probable Path
Hidden Markov Model - The Most Probable PathLê Hòa
 
머피's 머신러닝, Mixture model and EM algorithm
머피's 머신러닝, Mixture model and EM algorithm머피's 머신러닝, Mixture model and EM algorithm
머피's 머신러닝, Mixture model and EM algorithmJungkyu Lee
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Jae-yeol Lee
 
R実践 機械学習による異常検知 01
R実践 機械学習による異常検知 01R実践 機械学習による異常検知 01
R実践 機械学習による異常検知 01akira_11
 
今日からできる構造学習(主に構造化パーセプトロンについて)
今日からできる構造学習(主に構造化パーセプトロンについて)今日からできる構造学習(主に構造化パーセプトロンについて)
今日からできる構造学習(主に構造化パーセプトロンについて)syou6162
 
Very helpful python code to find coefficients of the finite difference method
Very helpful python code to find coefficients of the finite difference methodVery helpful python code to find coefficients of the finite difference method
Very helpful python code to find coefficients of the finite difference method智啓 出川
 
Introduction to SAC(Soft Actor-Critic)
Introduction to SAC(Soft Actor-Critic)Introduction to SAC(Soft Actor-Critic)
Introduction to SAC(Soft Actor-Critic)Suhyun Cho
 
2015年度先端GPGPUシミュレーション工学特論 第6回 プログラムの性能評価指針 (Flop/Byte,計算律速,メモリ律速)
2015年度先端GPGPUシミュレーション工学特論 第6回 プログラムの性能評価指針(Flop/Byte,計算律速,メモリ律速)2015年度先端GPGPUシミュレーション工学特論 第6回 プログラムの性能評価指針(Flop/Byte,計算律速,メモリ律速)
2015年度先端GPGPUシミュレーション工学特論 第6回 プログラムの性能評価指針 (Flop/Byte,計算律速,メモリ律速)智啓 出川
 
集中不等式のすすめ [集中不等式本読み会#1]
集中不等式のすすめ [集中不等式本読み会#1]集中不等式のすすめ [集中不等式本読み会#1]
集中不等式のすすめ [集中不等式本読み会#1]Kentaro Minami
 
Introduction to PyTorch
Introduction to PyTorchIntroduction to PyTorch
Introduction to PyTorchJun Young Park
 
Nimで競技プログラミングを始めた話(1ヶ月)
Nimで競技プログラミングを始めた話(1ヶ月)Nimで競技プログラミングを始めた話(1ヶ月)
Nimで競技プログラミングを始めた話(1ヶ月)tattaka_sun
 
Beta distribution and Dirichlet distribution (ベータ分布とディリクレ分布)
Beta distribution and Dirichlet distribution (ベータ分布とディリクレ分布)Beta distribution and Dirichlet distribution (ベータ分布とディリクレ分布)
Beta distribution and Dirichlet distribution (ベータ分布とディリクレ分布)Taro Tezuka
 
A Review of the Split Bregman Method for L1 Regularized Problems
A Review of the Split Bregman Method for L1 Regularized ProblemsA Review of the Split Bregman Method for L1 Regularized Problems
A Review of the Split Bregman Method for L1 Regularized ProblemsPardis N
 
ハミルトニアンモンテカルロ法についての説明
ハミルトニアンモンテカルロ法についての説明ハミルトニアンモンテカルロ法についての説明
ハミルトニアンモンテカルロ法についての説明KCS Keio Computer Society
 

Was ist angesagt? (20)

ディープボルツマンマシン入門
ディープボルツマンマシン入門ディープボルツマンマシン入門
ディープボルツマンマシン入門
 
[DL輪読会]Deep Learning 第9章 畳み込みネットワーク
[DL輪読会]Deep Learning 第9章 畳み込みネットワーク[DL輪読会]Deep Learning 第9章 畳み込みネットワーク
[DL輪読会]Deep Learning 第9章 畳み込みネットワーク
 
機械学習プロフェッショナルシリーズ輪読会 #5 異常検知と変化検知 Chapter 1 & 2 資料
機械学習プロフェッショナルシリーズ輪読会 #5 異常検知と変化検知 Chapter 1 & 2 資料機械学習プロフェッショナルシリーズ輪読会 #5 異常検知と変化検知 Chapter 1 & 2 資料
機械学習プロフェッショナルシリーズ輪読会 #5 異常検知と変化検知 Chapter 1 & 2 資料
 
Hidden Markov Model - The Most Probable Path
Hidden Markov Model - The Most Probable PathHidden Markov Model - The Most Probable Path
Hidden Markov Model - The Most Probable Path
 
Detecting fake jpeg images
Detecting fake jpeg imagesDetecting fake jpeg images
Detecting fake jpeg images
 
TaPL9
TaPL9TaPL9
TaPL9
 
머피's 머신러닝, Mixture model and EM algorithm
머피's 머신러닝, Mixture model and EM algorithm머피's 머신러닝, Mixture model and EM algorithm
머피's 머신러닝, Mixture model and EM algorithm
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]
 
R実践 機械学習による異常検知 01
R実践 機械学習による異常検知 01R実践 機械学習による異常検知 01
R実践 機械学習による異常検知 01
 
今日からできる構造学習(主に構造化パーセプトロンについて)
今日からできる構造学習(主に構造化パーセプトロンについて)今日からできる構造学習(主に構造化パーセプトロンについて)
今日からできる構造学習(主に構造化パーセプトロンについて)
 
Chainerで流体計算
Chainerで流体計算Chainerで流体計算
Chainerで流体計算
 
Very helpful python code to find coefficients of the finite difference method
Very helpful python code to find coefficients of the finite difference methodVery helpful python code to find coefficients of the finite difference method
Very helpful python code to find coefficients of the finite difference method
 
Introduction to SAC(Soft Actor-Critic)
Introduction to SAC(Soft Actor-Critic)Introduction to SAC(Soft Actor-Critic)
Introduction to SAC(Soft Actor-Critic)
 
2015年度先端GPGPUシミュレーション工学特論 第6回 プログラムの性能評価指針 (Flop/Byte,計算律速,メモリ律速)
2015年度先端GPGPUシミュレーション工学特論 第6回 プログラムの性能評価指針(Flop/Byte,計算律速,メモリ律速)2015年度先端GPGPUシミュレーション工学特論 第6回 プログラムの性能評価指針(Flop/Byte,計算律速,メモリ律速)
2015年度先端GPGPUシミュレーション工学特論 第6回 プログラムの性能評価指針 (Flop/Byte,計算律速,メモリ律速)
 
集中不等式のすすめ [集中不等式本読み会#1]
集中不等式のすすめ [集中不等式本読み会#1]集中不等式のすすめ [集中不等式本読み会#1]
集中不等式のすすめ [集中不等式本読み会#1]
 
Introduction to PyTorch
Introduction to PyTorchIntroduction to PyTorch
Introduction to PyTorch
 
Nimで競技プログラミングを始めた話(1ヶ月)
Nimで競技プログラミングを始めた話(1ヶ月)Nimで競技プログラミングを始めた話(1ヶ月)
Nimで競技プログラミングを始めた話(1ヶ月)
 
Beta distribution and Dirichlet distribution (ベータ分布とディリクレ分布)
Beta distribution and Dirichlet distribution (ベータ分布とディリクレ分布)Beta distribution and Dirichlet distribution (ベータ分布とディリクレ分布)
Beta distribution and Dirichlet distribution (ベータ分布とディリクレ分布)
 
A Review of the Split Bregman Method for L1 Regularized Problems
A Review of the Split Bregman Method for L1 Regularized ProblemsA Review of the Split Bregman Method for L1 Regularized Problems
A Review of the Split Bregman Method for L1 Regularized Problems
 
ハミルトニアンモンテカルロ法についての説明
ハミルトニアンモンテカルロ法についての説明ハミルトニアンモンテカルロ法についての説明
ハミルトニアンモンテカルロ法についての説明
 

Ähnlich wie Алгоритмы на ruby: перебор и рекурсия

Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Technopark
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013AliyaAringazinova
 
04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепции04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепцииFedor Tsarev
 
алгоритм циклический
алгоритм циклическийалгоритм циклический
алгоритм циклическийKhydosilova
 
практика 8
практика 8практика 8
практика 8student_kai
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеLidia Pivovarova
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыsimple_people
 
Инкапсуляция и полиморфизм в ruby
Инкапсуляция и полиморфизм в rubyИнкапсуляция и полиморфизм в ruby
Инкапсуляция и полиморфизм в rubyEvgeny Smirnov
 
Deep Learning and Convolutional Networks
Deep Learning and Convolutional NetworksDeep Learning and Convolutional Networks
Deep Learning and Convolutional NetworksAlignedResearch
 

Ähnlich wie Алгоритмы на ruby: перебор и рекурсия (20)

Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
 
04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепции04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепции
 
Diskretn analiz
Diskretn analizDiskretn analiz
Diskretn analiz
 
Diskretn analiz
Diskretn analizDiskretn analiz
Diskretn analiz
 
алгоритм циклический
алгоритм циклическийалгоритм циклический
алгоритм циклический
 
106170
106170106170
106170
 
106170
106170106170
106170
 
практика 8
практика 8практика 8
практика 8
 
Рекурсия (2017)
Рекурсия (2017)Рекурсия (2017)
Рекурсия (2017)
 
алгоритм
алгоритмалгоритм
алгоритм
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
 
Рекурсия. Поиск
Рекурсия. ПоискРекурсия. Поиск
Рекурсия. Поиск
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
 
01 вводная
01 вводная01 вводная
01 вводная
 
Инкапсуляция и полиморфизм в ruby
Инкапсуляция и полиморфизм в rubyИнкапсуляция и полиморфизм в ruby
Инкапсуляция и полиморфизм в ruby
 
4 algoritm
4 algoritm4 algoritm
4 algoritm
 
Алгоритм
АлгоритмАлгоритм
Алгоритм
 
Deep Learning and Convolutional Networks
Deep Learning and Convolutional NetworksDeep Learning and Convolutional Networks
Deep Learning and Convolutional Networks
 

Mehr von Evgeny Smirnov

Внедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиВнедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиEvgeny Smirnov
 
Инновации которые не мешают
Инновации которые не мешаютИнновации которые не мешают
Инновации которые не мешаютEvgeny Smirnov
 
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школеEvgeny Smirnov
 
Порядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеПорядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеEvgeny Smirnov
 
Ruby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмRuby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмEvgeny Smirnov
 
Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyEvgeny Smirnov
 
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образованииEvgeny Smirnov
 
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.Evgeny Smirnov
 
Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Evgeny Smirnov
 
Мастер-класс: Anki карточки
Мастер-класс: Anki карточкиМастер-класс: Anki карточки
Мастер-класс: Anki карточкиEvgeny Smirnov
 
Мастер-класс: Quiz up
Мастер-класс: Quiz upМастер-класс: Quiz up
Мастер-класс: Quiz upEvgeny Smirnov
 
Мастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraМастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraEvgeny Smirnov
 
Мастер-класс: начало
Мастер-класс: началоМастер-класс: начало
Мастер-класс: началоEvgeny Smirnov
 
LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)Evgeny Smirnov
 
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Evgeny Smirnov
 
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуEvgeny Smirnov
 
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Evgeny Smirnov
 
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмыEvgeny Smirnov
 

Mehr von Evgeny Smirnov (20)

Внедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиВнедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатики
 
Инновации которые не мешают
Инновации которые не мешаютИнновации которые не мешают
Инновации которые не мешают
 
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школе
 
Порядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеПорядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системе
 
Ruby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмRuby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизм
 
Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в ruby
 
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образовании
 
Newtonew Media
Newtonew MediaNewtonew Media
Newtonew Media
 
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.
 
Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2
 
Мастер-класс: Anki карточки
Мастер-класс: Anki карточкиМастер-класс: Anki карточки
Мастер-класс: Anki карточки
 
Мастер-класс: Quiz up
Мастер-класс: Quiz upМастер-класс: Quiz up
Мастер-класс: Quiz up
 
Мастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraМастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox Algebra
 
Мастер-класс: начало
Мастер-класс: началоМастер-класс: начало
Мастер-класс: начало
 
LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)
 
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
 
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методисту
 
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42
 
Блок-схемы
Блок-схемыБлок-схемы
Блок-схемы
 
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмы
 

Алгоритмы на ruby: перебор и рекурсия

  • 1. Алгоритмы Перебор Рекурсия References Алгоритмы. Перебор и рекурсия. Информатика 10-11 классы 4 декабря 2011 г. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 2. Алгоритмы Перебор Рекурсия References Что такое алгоритм? Алгоритм это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность (Д. Кнут). Основные свойства алгоритма: 1 Дискретность последовательное выполнение простых шагов. 2 Детерменированность определённость одинаковые исходные данные дают одинаковый результат. 3 Понятность. 4 Конечность количество шагов должно быть конечно (может быть и неявно задано). 5 Универсальность алгоритм должен работать для множества исходных данных. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 3. Алгоритмы Перебор Рекурсия References Виды алгоритмов 1 Динамическое программирование (было). 2 Метод перебора. 3 Рекурсия (повторение через себя). Рекурсия это рекурсия. 4 Жадные алгоритмы (хватай сначала самое большое). 5 Разделяй и властвуй (привет, принцип 3 ветвей власти). 6 Метод двоичного поиска. 7 Много–много других. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 4. Алгоритмы Перебор Рекурсия References Метод перебора Идея метода перебора очень проста переберём все варианты и выберем только те, которые нам нужны. Рассмотрим простую задачу: вывести на экран простые числа <= N. Есть красивые решения типа решета Эратосфена. Но мы пойдём “в лоб”. Listing 1: Простые числа def is_prime ?( n ) r e t u r n f a l s e i f ( ( n == 1 ) | | ( n == 0 ) ) f o r i i n 2 . . ( n−1) r e t u r n f a l s e i f ( n%i == 0 ) end true end 100. times {| i | puts i i f is_prime ?( i ) } Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 5. Алгоритмы Перебор Рекурсия References Метод перебора: НОД Рассмотрим задачу: найти НОД(a,b). Пример: НОД(15,12) = 3 Решаем методом перебора. Переберём все возможные делители этих двух чисел. Для этого пройдёмся циклом от 2 до, например, a. Если оба числа делятся на пробегаемое число, значит, пробегаемое число делитель. Запоминаем его. Если в результате работы программы мы находим делитель, который больше запомненного ранее, то стираем старый и записываем новый. Изначально зададим НОД = 1 (на 1 все числа делятся). НОД по-английски gcd. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 6. Алгоритмы Перебор Рекурсия References Метод перебора: НОД Listing 2: НОД двух чисел a и b def gcd ( a , b ) max = 1 for i in 2 . . a max = i i f ( ( a%i ==0) && ( b%i ==0)) end max end a = 126 b = 486 p u t s gcd ( a , b ) Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 7. Алгоритмы Перебор Рекурсия References Задачи на метод перебора Задача 1. Дано некоторое число a. Вывести на экран все числа, которые взаимно просты с a и не превышают N. N задаётся также в начале программы. Пример: a = 3, N = 10. Программа должна вывести следующие числа: 2, 4, 5, 7, 8, 10. Задача 2. Вывести на экран все пары взаимно простых чисел, каждое из которых не превышает N. N задаётся в начале программы. Пример: N = 5. Программа должна вывести: (2,3), (2,5), (3,4), (3,5), (4,5). Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 8. Алгоритмы Перебор Рекурсия References Рекурсия Рис.: Источник: http://ru.wikipedia.org Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 9. Алгоритмы Перебор Рекурсия References Рекурсия Рис.: Источник: http://ru.wikipedia.org Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 10. Алгоритмы Перебор Рекурсия References Рекурсия Рекурсия это рекурсия. Рекурсия это когда функция использует сама себя. Пример рекурсии числа Фибоначчи. Для того, чтобы посчитать 10 число Фибоначчи, нужно знать 8 и 9. А чтобы узнать их, нужно знать 2 их предыдущих и так далее. У рекурсии всегда есть две составляющие: 1 База до какого момента спускаемся. В случае чисел Фибоначчи база это нулевое и первое числа, которые равны 1. 2 Рекуррентная формула формула, которая говорит, как получить что-то из предыдущего. Для чисел Фибоначчи это: число Фибоначчи равно сумме двух предыдущих (ϕn = ϕn−1 + ϕn−2 ) Рекурсия может быть медленной. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 11. Алгоритмы Перебор Рекурсия References Числа Фибоначчи: рекурсия Напишем функцию для вычисления n–ного числа Фибоначчи через рекурсию. (!) Сравните по времени, сколько вычисляется 50-е число Фибоначчи рекурсией и обычным циклом. Listing 3: Рекурсия для чисел Фибоначчи def f i b o n a c c i ( n ) r e t u r n 1 i f ( ( n==0) | | ( n==1)) f i b o n a c c i ( n−1)+ f i b o n a c c i ( n−2) end puts f i b o n a c c i (10) Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 12. Алгоритмы Перебор Рекурсия References Легенда о Ханойских башнях Легенда гласит, что в Великом храме города Бенарас, под собором, отмечающим середину мира, находится бронзовый диск, на котором укреплены 3 алмазных стержня, высотой в один локоть и толщиной с пчелу. Давным-давно, в самом начале времён, монахи этого монастыря провинились перед богом Брахмой. Разгневанный, Брахма воздвиг три высоких стержня и на один из них возложил 64 диска. Брахма поместил на один из стержней 64 диска из чистого золота, причем так, что каждый меньший диск лежит на большем. Как только все 64 диска будут переложены со стержня, на который Брахма сложил их при создании мира, на другой стержень, башня вместе с храмом обратятся в пыль и под громовые раскаты погибнет мир. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 13. Алгоритмы Перебор Рекурсия References Задача о ханойских башнях Рис.: Источник: http://ru.wikipedia.org Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 14. Алгоритмы Перебор Рекурсия References Задача о ханойских башнях Пример простого решения рекурсией без понимания работы алгоритма задача о ханойских башнях. Даны три стержня, на один из которых нанизаны несколько колец, причем кольца отличаются размером и лежат меньшее на большем. Задача состоит в том, чтобы перенести пирамиду из восьми колец за наименьшее число ходов. За один раз разрешается переносить только одно кольцо, причём нельзя класть большее кольцо на меньшее. Пример алгоритма для 3 колец: с 1 на 3, с 1 на 2, с 3 на 2, с 1 на 3, с 2 на 1, с 2 на 3, с 1 на 3. Задача 1. Написать программу с использованием рекурсии, которая выводит на экран алгоритм решения задачи для заданного количества колец. Задача 2. Посчитать и объяснить, сколько минимально потребуется монахам времени, чтобы выполнить условие Брахмы. Предположим, что на 1 перекладывание монахи тратят 1 минуту. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 15. Алгоритмы Перебор Рекурсия References References Все презентации доступны на http://school.smirik.ru! Вопросы, предложения, д/з: smirik@gmail.com Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.