Representation and Evaluation of Algorithms

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

Data Structures and Algorithms

2nd lecture, September 24, 2015

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

Martin J. Dürst

AGU

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

Today's Schedule

 

Summary of Last Lecture

 

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

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

 

Solution to Homework 1, Question 1

[昨年度資料につき削除] 

Last Week's Homework 3: Help Ms. Noda

[昨年度資料につき削除] 

Last Week's Homework 2: Representation of Algorithms

[昨年度資料につき削除] 

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:

 

Programming Language

Advantages:

Disadvantages:

 

The Programming Language Ruby

 

Last Week's Homework 4: Install Ruby

Install Ruby on your notebook computer (and/or on your computer at home)

Main installation methods:

How to check: Open a Cygwin Terminal or Start Command Prompt with Ruby and execute ruby -v

Important: If you have problems with installing Ruby, come to my lab to fix it before the next lecture.

 

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 answer.

When we compare algorithms, we want a simple answer.

 

Comparing Execution Times: From Concrete to Abstract

From concrete

To 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

 

Homework 1: Example for Asymptotic Growth of Number of Steps

number of steps
n (number of data items) 1 10 100 1,000 10,000 100,000 1,000,000
linear search
binary search

 

Homework 2: Compare Function Growth

Which function of each pair (left/right column) grows larger if n increases?

100n n2
1.1n n20
5 log2 n 10 log4 n
20n n!
100·2n 2.1n

 

Summary of Today's Lecture

 

This Week's Homework

(提出不要)

  1. Ruby を使って探索アルゴリズムのステップ数を調べ、テーブルを完成
    (散布図を作成してもよい)
  2. 関数の増加の比較で、どちらの関数が「最終的に勝つ」か、そしてその理由を調べなさい
  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)
基準
computational complexity
計算量
worst case
最悪の場合
asymptotic
漸近