ALG2012-A.ppt

Similar documents
untitled

ALG2012-C.ppt

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

ALG ppt

8 if switch for while do while 2

untitled

( ) ( ) 30 ( ) 27 [1] p LIFO(last in first out, ) (push) (pup) 1

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

untitled

Microsoft Word - keisankigairon.ch doc

明解Javaによるアルゴリズムとデータ構造

ALG2012-F.ppt

明解Javaによるアルゴリズムとデータ構造

: : : TSTank 2

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

K227 Java 2

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

新・明解Javaで学ぶアルゴリズムとデータ構造

Java (7) Lesson = (1) 1 m 3 /s m 2 5 m 2 4 m 2 1 m 3 m 1 m 0.5 m 3 /ms 0.3 m 3 /ms 0.6 m 3 /ms 1 1 3

r1.dvi

I java A

Microsoft Word - NonGenList.doc

text_08.dvi

2. データ構造ヒープに保存するデータは 番号付けられて保存される 従って リスト L として保存することとする 3. アルゴリズム 3.1. 要素の追加新しい要素の追加は リストの終端に置くことで開始する つまり 最下層の一番右 または新たに最下層を生成してその一番左となる この後 この要素を正し

3 Java 3.1 Hello World! Hello World public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World");

新・明解Javaで学ぶアルゴリズムとデータ構造

1. はじめに 二分木ヒープ 様々なアルゴリズムにおいて ある要素の集合またはリストから 最小 な要素を取り 出す必要がある そのような場合に使われる標準的データ構造が二分木ヒープ (binary heap) である あるオブジェクトO を考える そのオブジェクトは ラベル O. label と値

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

Microsoft Word - NonGenTree.doc

10K pdf

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

新・明解Java入門

Microsoft PowerPoint ppt

JAVA とテンプレート

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

2

Java (5) 1 Lesson 3: x 2 +4x +5 f(x) =x 2 +4x +5 x f(10) x Java , 3.0,..., 10.0, 1.0, 2.0,... flow rate (m**3/s) "flow

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy


(Eclipse\202\305\212w\202\324Java2\215\374.pdf)

ALG ppt

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

解きながら学ぶJava入門編

Vector Vector Vector Vector() Vector(int n) n Vector(int n,int delta) n delta

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

r02.dvi

ohp02.dvi

Java演習(4) -- 変数と型 --

** 平成 16 年度 FE 午後問題 Java** 示現塾プロジェクトマネージャ テクニカルエンジニア ( ネットワーク ) など各種セミナーを開催中!! 開催日 受講料 カリキュラム等 詳しくは 今すぐアクセス!! 平成 16

問題1 以下に示すプログラムは、次の処理をするプログラムである

oop1

プログラミングA

Java講座

tkk0408nari

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

二分木ヒープとは 集合 リストから 最小な 要素を取り出す 二分木ヒープは そのための標準的データ構造 二分木ヒープを保存するデータ構造 二分木ヒープの操作のメソッド 対象となるデータクラス 識別のためのlabelフィールド 値を保持するvalueフィールド

ALG ppt

Javaによるアルゴリズムとデータ構造


目的 泡立ち法を例に Comparableインターフェイスの実装 抽象クラスの利用 型パラメタの利用 比較 入替 の回数を計測

問題1 以下に示すプログラムは、次の処理をするプログラムである


Java学習教材

Microsoft PowerPoint - lec06 [互換モード]

デジタル表現論・第4回

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap

2

Java updated

JavaプログラミングⅠ

r07.dvi

ohp07.dvi

JavaプログラミングⅠ

PowerPoint Presentation

プログラミング入門1

Java 3 p.2 3 Java : boolean Graphics draw3drect fill3drect C int C OK while (1) int boolean switch case C Calendar java.util.calendar A

JavaプログラミングⅠ

Quick Sort 計算機アルゴリズム特論 :2017 年度 只木進一

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

ワークショップ テスト駆動開発

Thread

JavaプログラミングⅠ

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

明解Java入門編

1.1 (1) (2) (3) (4) 2

とても使いやすい Boost の serialization

2

1_cover

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

Assignment_.java 課題 : 転置行列 / class Assignment_ public static void main(string[] args) int i,j; int[][] array = 1,,,,,,,,,,,,,1,1,; 行 列行列 i

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

オブジェクト指向プログラミング・同演習 5月21日演習課題

2.2 Java C main Java main 2 C 6 C Java 3 C Java ( ) G101Hello.java G101Hello main G101Hello.java /* G101Hello */ class G101Hello { /* main */ public s

cpp1.dvi

Java Java Java Java Java 4 p * *** ***** *** * Unix p a,b,c,d 100,200,250,500 a*b = a*b+c = a*b+c*d = (a+b)*(c+d) = 225

DVIOUT-exer

JAVA入門

Prog2_9th

Transcription:

21279 (sakai.keiichi@kochi-tech.ac.jp) http://www.info.kochi-tech.ac.jp/k1sakai/lecture/alg/212/index.html

(, )ε

m = n C2 = n ( n 1) / 2 m = n ( n 1)

1 11 11 111 11 111 111 1111 1 1 11 1 11 11 111 4-dimentional binary hyper cube

......

public class Node<E> { private E value; // private Collection<Node<E>> edges; // private boolean visited; private int sequence; private boolean searching; public Node(E value, Collection<Node<E>> edges) { this.value = value; this.edges = edges; reset(); public void reset(){ this.visited = false; this.sequence = ; this.edges.clear(); this.searching = false; public E getvalue() { // return value; public Collection<Node<E>> getedges(){ return this.edges; 4.34.4 public boolean isvisited() { return visited; public void setvisited(boolean v) { this.visited = v; public int getsequence() { return sequence; public void setsequence(int s) { this.sequence = s; public boolean issearching() { return searching; public void setsearching(boolean s) { this.searching = s; public void connect(node<e> to){ this.edges.add(to); // if(!to.getedges().contains(this) ){ to.getedges().add(this); public void connectto(node<e> to){ this.edges.add(to); // 8

private static Node<Character> nodea = new Node<Character>('A', new LinkedList<Node<Character>>()); private static Node<Character> nodeb = new Node<Character>('B', new LinkedList<Node<Character>>()); private static Node<Character> nodec = new Node<Character>('C', new LinkedList<Node<Character>>()); private static Node<Character> noded = new Node<Character>('D', new LinkedList<Node<Character>>()); private static Node<Character> nodee = new Node<Character>('E', new LinkedList<Node<Character>>()); private static Node<Character> nodef = new Node<Character>('F', new LinkedList<Node<Character>>()); private static Node<Character> nodeg = new Node<Character>('G', new LinkedList<Node<Character>>()); private static Collection<Node<Character>> test_data = new LinkedList<Node<Character>>(); static { test_data.add(nodea); test_data.add(nodeb); test_data.add(nodec); test_data.add(noded); test_data.add(nodee); test_data.add(nodef); test_data.add(nodeg); public class DepthFirstSearch { private static <E> void visit(node<e> node){ node.setvisited(true); System.out.print(node.getValue()); for(node<e> neighbor: node.getedges()){ if(neighbor.isvisited()) continue; // System.out.print(" -> "); visit(neighbor); public static <E> void search(collection<node<e>> graph){ for(node<e> node: graph){ if(node.isvisited()) continue; // System.out.println(node.getValue() + ""); visit(node); System.out.println(); 9

public static void main(string[] args) { System.out.println("4.3.2"); for(node<character> node: test_data){ node.reset(); nodea.connect(nodec); nodea.connect(noded); nodea.connect(nodeb); nodec.connect(nodee); nodec.connect(nodef); noded.connect(nodeb); noded.connect(nodef); nodee.connect(nodeg); nodee.connect(nodef); search(test_data); public static void main(string[] args) { System.out.println("4.3.3"); for(node<character> node: test_data){ node.reset(); nodea.connect(nodec); nodea.connect(noded); nodea.connect(nodeb); nodec.connect(nodef); nodec.connect(nodee); noded.connect(nodeb); noded.connect(nodef); nodee.connect(nodeg); nodee.connect(nodef); search(test_data); public static void main(string[] args) { System.out.println("4.3.4"); for(node<character> node: test_data){ node.reset(); nodea.connectto(nodec); nodea.connectto(noded); nodea.connectto(nodee); nodec.connectto(nodeb); nodeb.connectto(nodea); noded.connectto(nodec); noded.connectto(nodee); nodef.connectto(nodea); nodef.connectto(nodeg); search(test_data); 1

....

public class DirectedDepthFirstSearch<E> { private int sequence; private void visit(node<e> node){ node.setvisited(true); node.setsequence(++this.sequence); node.setsearching(true); System.out.print(node.getValue()); for(node<e> neighbor: node.getedges()){ if(neighbor.getsequence() == ){ System.out.print(" -> "); visit(neighbor); // else if (neighbor.getsequence() > node.getsequence()) { System.out.print(" (" + node.getvalue() + ", " + neighbor.getvalue() + ")"); else if (neighbor.issearching()){ System.out.print(" (" + node.getvalue() + ", " + neighbor.getvalue() + ")"); else { System.out.print(" (" + node.getvalue() + ", " + neighbor.getvalue() + ")"); node.setsearching(false); public void search(collection<node<e>> graph){ this.sequence = ; for(node<e> node: graph){ if(node.getsequence() == ){ System.out.println(node.getValue() + ""); visit(node); System.out.println(); 12

public static void main(string[] args) { System.out.println("4.3.4"); for(node<character> node: test_data){ node.reset(); nodea.connectto(nodec); nodea.connectto(noded); nodea.connectto(nodee); nodec.connectto(nodeb); nodeb.connectto(nodea); noded.connectto(nodec); noded.connectto(nodee); nodef.connectto(nodea); nodef.connectto(nodeg); new DirectedDepthFirstSearch<Character>().search(test_data); 13

4.3.6 2 2 5 4 3 5 2 2 5 4 3 5 5

....

public class BreadthFirstSearch { public static <E> void search(collection<node<e>> graph){ Queue<Node<E>> queue = new LinkedList<Node<E>>(); for(node<e> node: graph){ if(node.isvisited()){ continue; // queue.add(node); node.setvisited(true); while(!queue.isempty() ){ Node<E> next = queue.remove(); System.out.print("" + next.getvalue()); for(node<e> neighbor: next.getedges()){ if( neighbor.isvisited() ){ continue; // FIFO // enqueue // dequeue queue.add(neighbor); // enqueue neighbor.setvisited(true); System.out.print(" (" + next.getvalue() + ", " + neighbor.getvalue() + ")"); System.out.print(" -> "); System.out.println(); 16

public static void main(string[] args) { System.out.println("4.3.7"); for(node<character> node: test_data){ node.reset(); nodea.connect(nodec); nodea.connect(noded); nodea.connect(nodeb); nodec.connect(nodee); nodec.connect(nodef); noded.connect(nodeb); noded.connect(nodef); nodee.connect(nodeg); nodee.connect(nodef); search(test_data); 17

public class DepthFirstSearchStack { public static <E> void search(collection<node<e>> graph){ Stack<Node<E>> stack = new Stack<Node<E>>(); for(node<e> node: graph){ if(node.isvisited()){ continue; // stack.push(node); node.setvisited(true); while(!stack.empty() ){ Node<E> next = stack.pop(); System.out.print("" + next.getvalue()); for(node<e> neighbor: next.getedges()){ if( neighbor.isvisited() ){ continue; stack.add(neighbor); neighbor.setvisited(true); System.out.print(" -> "); System.out.println(); // LIFO // push // pop // push 18