ALG2012-F.ppt

Similar documents
untitled

ALG2012-C.ppt

I java A

: : : TSTank 2

ALG ppt

ALG2012-A.ppt

K227 Java 2

ALG ppt

untitled

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

Microsoft Word - keisankigairon.ch doc

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

untitled

2

8 if switch for while do while 2

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

2

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

r1.dvi

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

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

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

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

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

r02.dvi

ohp02.dvi

10K pdf

プログラミングA


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

解きながら学ぶJava入門編

JavaプログラミングⅠ

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

48 * *2

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

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

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

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

12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある インターネットアドレス

r3.dvi


JavaプログラミングⅠ

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

新・明解Java入門

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

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

JavaプログラミングⅠ

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

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

r2.dvi

ALG ppt

Java講座

r2.dvi

Java学習教材

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

PSCHG000.PS

( ) p.1 x y y = ( x ) 1 γ γ = filtergamma.java import java.applet.*; public class filtergamma extends Applet{ Image img; Image new_img; publi

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

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

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

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

19 3!! (+) (>) (++) (+=) for while 3.1!! (20, 20) (1)(Blocks1.java) import javax.swing.japplet; import java.awt.graphics;

Programming-C-9.key

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

Java演習(6) -- 条件分岐 --

(Java/FX ) Java CD Java version Java VC++ Python Ruby Java Java Eclipse Java Java 3 Java for Everyone 2 10 Java Midi Java JavaFX Shape Canvas C

Thread

Prog2_9th

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

(Basic Theory of Information Processing) 1

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

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

プログラミング入門1

Java updated

デジタル表現論・第4回

プログラミング入門1

JAVA 11.4 PrintWriter 11.5

JavaプログラミングⅠ

oop1

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

226

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

Microsoft PowerPoint ppt

tkk0408nari


とても使いやすい Boost の serialization

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

Microsoft PowerPoint - prog03.ppt

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

PowerPoint Presentation

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

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(Java) サンプル問題 知識科目 第 1 問 (

55 7 Java C Java TCP/IP TCP/IP TCP TCP_RO.java import java.net.*; import java.io.*; public class TCP_RO { public static void main(string[] a

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

GUIプログラムⅡ

Javaプログラムの実行手順

JavaプログラミングⅠ

JavaプログラミングⅠ

Java演習(2) -- 簡単なプログラム --

人工知能入門

Transcription:

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

5 2

3

4

- 5

.. 6

- 7

public class KnapsackBB { // 0-1 private static double maxsofar; private static boolean[] result; private static boolean[] choice; private static void backtrack(int i, double profit, double weight){ if(i >= (items.length-1)){ if(profit > maxsofar){ maxsofar = profit; result = choice.clone(); // else { if(items[i].getweight() <= weight){ choice[i] = true; // i backtrack(i + 1, profit + items[i].getprofit(), weight - items[i].getweight()); double z = 0; double u = weight; int j; for(j = i+1; items[j].getweight() <= u; j++){ u -= items[j].getweight(); z += items[j].getprofit(); z += u*items[j].getvalue(); if((z + profit) > maxsofar){ choice[i] = false; // i backtrack(i+1, profit, weight); 0-1 8

private static ItemBB[] items = { new ItemBB(" ", 10, 100), new ItemBB(" ", 98, 300), new ItemBB(" ", 398, 300), new ItemBB(" ", 1000, 6000), new ItemBB(" ", 398, 800), new ItemBB(" ", 100, 200), new ItemBB(" ", 200, 300), new ItemBB(" ", 980, 2000), new ItemBB(" ", 298, 400), new ItemBB(" ", 1000, 800), new ItemBB(" ", 10, 50), new ItemBB(" ", 20, 60), new ItemBB(" ", 100, 300), new ItemBB(" ", 20, 100), new ItemBB(" ", 100, 250), new ItemBB(" ", 300, 90), new ItemBB(" ", 333, 600), new ItemBB(" ", 198, 300), new ItemBB(" ", 300, 100), new ItemBB(" ", 1000, 200), new ItemBB(" ", 0, Double.POSITIVE_INFINITY) ;, 1000.0, 800.0 public static void main(string[], args) 298.0, { 400.0 double limit;, 200.0, 300.0 try {, 333.0, 600.0 limit = Double.parseDouble(args[0]); catch(exception e){ limit = 9000; Arrays.sort(items); maxsofar = Double.NEGATIVE_INFINITY;, 1000.0, 200.0 choice = new boolean[items.length];, 300.0, 90.0, 300.0, 100.0 backtrack(0, 0, limit); double p = 0, w = 0; int n = 0; for(int i = 0; i < items.length-1; i++){ if(result[i]){ p += items[i].getprofit(); w += items[i].getweight(); n++; System.out.println(items[i]); System.out.print(" : " + limit); System.out.print("\t : " + n); System.out.print("\t : " + w); System.out.println("\t : " + p); [sakai@star bin]$ java complex.knapsackbb 5000, 1000.0, 200.0, 300.0, 90.0, 300.0, 100.0, 398.0, 300.0, 100.0, 200.0, 980.0, 2000.0 : 5000.0 : 10 : 4990.0 : 4909.0 [sakai@star bin]$ java complex.knapsackbb 4900, 398.0, 300.0, 1000.0, 800.0, 298.0, 400.0, 200.0, 300.0, 333.0, 600.0, 980.0, 2000.0, 20.0, 60.0, 10.0, 50.0 : 4900.0 : 11 : 4900.0 : 4839.0 9

10

public class KnapsackDP { // private static void solve(itemdp[] items, int weight, int[] result){ double[] gain = new double[weight+1]; int[] choice = new int[weight+1]; Arrays.fill(choice, -1); - for(int j = 0; j < items.length; j++){ for(int i = 1; i <= weight; i++){ int k = i - items[j].getweight(); if(k >= 0){ if((gain[k] + items[j].getprofit()) > gain[i]){ gain[i] = gain[k] + items[j].getprofit(); choice[i] = j; int k; for(int i = weight; choice[i] >= 0; i -= items[k].getweight()){ k = choice[i]; result[k]++; 11

[sakai@star bin]$ java complex.knapsackdp 1200, 297.0, 298, 4 : 1200 : 4 : 1192 : 1188.0 [sakai@star bin]$ java complex.knapsackdp 1190, 297.0, 298, 3 public static, void main(string[] 288.0, args) 278, { 1 int limit; : 1190 : 4 : 1172 : 1179.0 try { limit = Integer.parseInt(args[0]); [sakai@star bin]$ java complex.knapsackdp 1170 catch(exception e){ limit = 9000;, 297.0, 298, 2, 288.0, 278, 2 int[] result : = new int[items.length]; 1170 : 4 : 1152 : 1170.0 solve(items, limit, result); [sakai@star bin]$ java complex.knapsackdp 1150 double p = 0; int w = 0, n, = 0; 297.0, 298, 1 for(int i =, 0; i < result.length; 288.0, i++){ 278, 3 if(result[i] : > 0){ 1150 : 4 : 1132 : 1161.0 p += items[i].getprofit()*result[i]; [sakai@star bin]$ java complex.knapsackdp 1130 w += items[i].getweight()*result[i];, 288.0, 278, 4 n += result[i]; : 1130 : 4 : 1112 : 1152.0 System.out.println(items[i] [sakai@star bin]$ java + ", " complex.knapsackdp + result[i]); 1110, 297.0, 298, 1 System.out.print(" :, 300.0, 398, " + limit); 2 System.out.print("\t : : 1110 " + n); : 3 : 1094 : 897.0 System.out.print("\t : [sakai@star bin]$ java " + w); complex.knapsackdp 1093 12 System.out.println("\t :, 297.0, 298, 2 " + p);, 300.0, 398, 1 : 1093 : 3 : 994 : 894.0 private static ItemDP[] items = { new ItemDP(" ", 297, 298), new ItemDP(" ", 280, 298), new ItemDP(" ", 295, 335), new ItemDP(" ", 283, 350), new ItemDP(" ", 291, 398), new ItemDP(" ", 270, 350), new ItemDP(" ", 288, 278), new ItemDP(" ", 300, 398), new ItemDP(" ", 265, 298), new ItemDP(" ", 290, 348) ;

13

d AB + d BC d AC 14

1. 2. 3. 4. 1. 2. 3. 15

16

17

: : : : ( ) PHS 18