Algorithms and Data Structures:
Concepts and Applications

(アルゴリズムとデータ構造の概要と応用分野)

Data Structures and Algorithms

(データ構造とアルゴリズム)

1st lecture, September 22/on demand, 2022

https://www.sw.it.aoyama.ac.jp/2022/DA/lecture1.html

Martin J. Dürst

(テュールスト マーティン ヤコブ)

duerst@it.aoyama.ac.jp

Building O, Room 529

 

AGU

© 2008-22 Martin J. Dürst Aoyama Gakuin University

Today's Schedule

Covid Precautions

 

自己紹介

 

授業の位置づけ

This is a JE course (理工学国際プログラム JE 科目): The explanations are in Japanese, the materials (mostly) in English

 

授業の進め方

 

成績評価方法

およその割合:

総合的な評価

 

Lecture Schedule and Bibliography

Data Structures and Algorithms: Schedule

Bibliography (参考書)

 

Glossary

 

Positioning of Algorithms and Data Structures

Applications
Theory Algorithms and
Data Structures
Programming
Hardware

 

Why Algorithms and Data Structures?

Example of what happens without data structures and algorithms:

 

One More Example

  // target and pattern are very long strings
  match=0;
  for (i=0; i<strlen(target); i++) {
    match_char = 0;
    for (j=0; j<strlen(pattern); j++)
      if (target[i+j] == pattern[j])
        match_char++;
    if (match_char==strlen(pattern))
      match++;
  }   

Very slow!

 

Where is the Problem?

  // target and pattern are very long strings
  match=0;


  for (i=0; i<strlen(target); i++) {
    match_char = 0;
    for (j=0; j<strlen(pattern); j++)
      if (target[i+j] == pattern[j])
        match_char++;
    if (match_char==strlen(pattern))
      match++;
  }   

strlen takes more time for longer strings! 

 

Solution

  // target and pattern are very long strings
  match=0;
  p_length = strlen(pattern);

  for (i=0; i<strlen(target); i++) {
    match_char = 0;
    for (j=0; j<p_length; j++)
      if (target[i+j] == pattern[j])
        match_char++;
    if (match_char==p_length)
      match++;
  }   

 

Further Improvement

  // target and pattern are very long strings
  match=0;
  p_length = strlen(pattern);
  t_length = strlen(target);
  for (i=0; i<t_length; i++) {
    match_char = 0;
    for (j=0; j<p_length; j++)
      if (target[i+j] == pattern[j])
        match_char++;
    if (match_char==p_length)
      match++;
  }   

 

The Fascination of Algorithms and Data Structures

 

Lecture Goals

Understand

 

Example of Data Structure:
Linked List

 
 
 

 

Linked List

 

Data Structure: Concept

A data structure consists of:

The term data structure is used mostly for structures inside a computer (in main memory).

There are two different views of data structures:

 

Algorithm Examples

Problem: Searching a word (target) in a (real!) dictionary

 

Algorithm: Concept

An algorithm is a clear set of instructions for how to solve a well-defined problem in finite time.

Requirements:

  1. Clear definition of problem and result (well-defined problem)
  2. Detailled and precise step-by-step instructions (clear set of instructions)
  3. Termination in a finite number of steps (finite time)

 

Counterexamples

  1. "Let's create world peace!"
    → Not a well-defined problem
  2. "Just look it up in the dictionary!"
    → No clear set of instructions
  3. Random dictionary search: Open the dictionary at random locations, stop if you find the target word.
    → No finite time (may take an infinite number of steps)

 

Difference between Algorithms and Programs

 

Relationship between Data Structures and Algorithms

 

History of Algorithms

 

Homework 1: Huge Amounts of Data

Submission: Deadline: September 28 (Wednesday), 18:40; Place: Box in front of room O-529; Format: One page, A4 (both sides okay, legible handwriting, name (incl. reading) and student number at top right)

(for each subproblem, give the reasons for you assumptions, and cite references. When citing Wikipedia,..., use IRIs, not URIs, e.g. http://ja.wikipedia.org/wiki/情報, not http://ja.wikipedia.org/wiki/%E6%83%85%E5%A0%B1.)

  1. For trades in all Sections of the Tokyo Stock Exchange, calculate the total number of data items (counting one trade as one data item) during 2022. Assume that during operating hours, each stock is traded once every second.
  2. Imagine and explain some kind of data where the number of data items is much higher than in subproblem 1, and where the data may actually be processed on a computer (there will be a deduction if different students submit similar solutions).

 

宿題 1: 膨大なデータ

提出: 9月28日 (水) 18:40 締切; O 棟 529号室の前の箱に提出; A4 一枚 (両面可、読みやすい手書き、名前、よみ、学生番号右上) 厳守

(それぞれの問題で、想定の根拠となる理由、参考にした文献など必ず明記のこと。Wikipedia などへの参照の場合、URI のではなく IRI を使用のこと (例: http://ja.wikipedia.org/wiki/%E6%83%85%E5%A0%B1 のではなく http://ja.wikipedia.org/wiki/情報))

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

 

Homework 2: Representation of Algorithms

Examine the algorithm representations in the separate document, and think about each representation's advantages and disadvantages.

(no need to submit)

 

Homework 3: Help Ms. Noda

Design an efficient (=fast) algorithm for Ms. Noda's problem.

Hint: Can you use an algorithm that you already know?

(no need to submit)

 

Homework 4: Install Ruby

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

Main installation methods (choose one):

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

If the Ruby version is output, then your Ruby installation is succesful. If it says something such as "command not found", then your installation is not successful.

Important: If you have problems with installing Ruby, contact me before the next lecture.

Bring your notebook computer with you to the next lecture

 

Preparation for the Next Lecture

 

ラボワークへのお誘い

 

Summary of this Lecture

 

Glossary

job search
就職活動
data structure
データ構造
linked list
連続リスト
data item
データ項目
abstract data type (ADT)
抽象データ型
algorithm
アルゴリズム
linear search
線形探索
binary search
二分探索
counterexample
反例
implement/implementation
実装する / 実装
land area calculations
土地面積の計算
ancient Egypt
古代エジプト
Euclid
ユークリッド
greatest common denominator (GCD)
最大公約数
Mathematician
数学者
ancient Greece
古代ギリシャ
algorithmic trading
アルゴリズム取引
state
状態
static aspect
静的側面
dynamic aspect
動的側面
economic
経済的