Representation and Evaluation of Algorithms

(アルゴリズムの表現と評価)

Data Structures and Algorithms

2nd lecture, October 6, 2016

http://www.sw.it.aoyama.ac.jp/2016/DA/lecture2.html

Martin J. Dürst

AGU

© 2009-16 Martin J. Dürst Aoyama Gakuin University

Today's Schedule

 

Summary of Last Lecture

 

前回の宿題 1: 膨大なデータ

  1. 東京証券取引所の第一部の取引で、一つの株式会社の株が営業時間内に平均で 30秒で一回売買されていると想定して、合計で年間に (一売買行為を一つの項目と考えるとき) 何項目のデータが集まるかを、計算しなさい。
  2. 問題 1 の結果よりもデータ項目数がもっと多くて、実際に計算機で扱えそうな問題を考え、説明しなさい (他人と同じものの場合には減点対象)。

 

Methods for Representing Algorithms

 

Text

Principle: Describe the algorithm in a natural language

Advantages: Possible to understand/write for non-experts

Disadvantages:

 

Diagrams

Examples: Flowchart, ...

Advantages: Visual expression

Disadvantages:

(structured programming: replacing goto (jump to an arbitrary location in a program) with structured branches (if/switch/...) and loops (for/while/...) only)

 

What is Pseudocode

 

Evaluation of Pseudocode

Advantages:

Disadvantages:

 

Programing Languages

Advantages:

Disadvantages:

 

The Programming Language Ruby

 

Ruby for Algorithm Representation

Important: In this course, you have to learn how to read Ruby programs. But you do not need to write Ruby programs.

 

First Ruby Example

Linear search and binary search: 2search.rb

How to execute:

 

Basics of Ruby Syntax

 

Overview of Algorithm Evaluation

Main evaluation criteria:

Contextual information used for evaluation:

 

Comparing the Execution Time of Algorithms

Example: Comparing linear search and binary search

Possible questions:

Problem: These questions do not have a single, clear answer.

When we compare algorithms, we want a simple answer.

 

Comparing Execution Times: From Concrete to Abstract

Concrete ↑

Abstract ↓

 

Measuring Execution Time

⇒ We need a better method to compare algorithms, not implemenations or hardware

 

Counting Operation Steps

(Step: An operation that can be calculated in constant time; examples: arithmetic operations (addition, multiplication, ...), comparisons, memory access, ...)

⇒ We need a more abstract way to compare algorithms

 

Summary of Today's Lecture

 

This Week's Homework

(提出は不要不要だが、表など記入したまま資料を持ってくること)

  1. Ruby を使って探索アルゴリズムのステップ数を調べ、テーブルを完成
    (散布図を作成してもよい)
  2. n の増加の場合、複数の関数の値を計算しなさい
  3. 関数の増加の比較で、どちらの関数が「最終的に勝つ」か、そしてその理由を調べなさい
  4. 高校の教科書やウェブなどで対数 (ln, log10, log2 など) と極限 (limn→∞など) について調査・再確認

 

Glossary

representation
表現
evaluation
評価
pseudocode
疑似コード
non-expert
素人
ambiguity
曖昧さ
natural language
自然言語 (すなわち、人間が話す言語)
flowchart
流れ図
structured progamming
構造化プログラミング
obfuscation
ごまかし
object-oriented (programming language)
オブジェクト指向 ((プログラム) 言語)
scripting language
スクリプト言語
criterion (複数 criteria)
基準
execution time
実行時間
computational complexity
計算量
worst case
最悪の場合
asymptotic
漸近
round
四捨五入する、概数で表す
logarithm
対数
limit
極限