3.多項式計算アルゴリズム べき乗の計算 多項式の計算.

Slides:



Advertisements
Similar presentations
SPSSによるHosmer-Lemeshow検定について
Advertisements

あなたは真夜中に 山の頂上を目指す登山者です
1 ソフトウェア工学 200 5 年 5セメスタ. 2 履修にあたって 教科書:「アルゴリズムとデータ構造」 平田富夫著 森北出版 講義:5セメスター開講、専門科目、 K318 、金曜4時限 担当: 草苅 良至 GI511, 2095、 参考書:「プログラミング作法」
レポート書き方. おしいレポート よく調べてある それぞれの、1文の言っていることは正 しい しかし、全体として、何が言いた いのかわからない 内容の重要だが、全体の構成も重 要である.
1 7.時間限定チューリングマシンと クラス P. 2 7 -1.入力サイズ チューリングマシンの入力記号 の長さ を 入力サイズという。 名称:合成数の問題 インスタンス:整数n 問:nは合成数か? 通常は、入力サイズとしてはもっとも短い表現での 長さが利用される。 例えば、次のような合成数の問題における入力サイズは、
7.n次の行列式   一般的な(n次の)行列式の定義には、数学的な概念がいろいろ必要である。まずそれらを順に見ていく。
9.線形写像.
3.多項式計算アルゴリズム べき乗の計算 多項式の計算.
時間的に変化する信号. 普通の正弦波 は豊富な情報を含んでいません これだけではラジオのような複雑な情報 を送れない 振幅 a あるいは角速度 ω を時間的に変化 させて情報を送る.
九州大学 岡村研究室 久保 貴哉 1. 利用中のAPの数の推移 2 横軸:時刻 縦軸:接続要求数 ・深夜では一分間で平均一台、 昼間では平均14台程度の接続 要求をAPが受けている。 ・急にAPの利用者数が増えてく るのは7~8時あたり.
麻雀ゲーム 和島研究室 ソ 小林巧人
5.連立一次方程式.
相関.
1 情報量(2章). 2 物理的概念との対比1(入れ物と中 身) 塩水 塩 データ 情報 情報の量? 塩分の量! 情報の量は見た目ではわ からない。データと情報 は異なる概念。 塩分の量は見た目 ではわからない。 しかし、本質的な もの。
―本日の講義― ・平均と分散 -代表値 -ぱらつき(分散・標準偏差等) ・Excelによる演習
論理回路 第2回 今日の内容 前回の課題の説明 数の体系 – 数の表現 – 代表的な数 – 基数の変換 – 補数.
ノイズ. 雑音とも呼ばれる。(音でなくても、雑 音という) 入力データに含まれる、本来ほしくない 成分.
広告付き価格サービ ス 小園一正. はじめに 世の中には様々な表現方法の広告があり ます。その中でも私たち学生にとって身 近にあるものを広告媒体として取り入れ られている。 価格サービス(無料配布のルーズリー フ)を体験したことにより興味を惹かれ るきっかけとなった。主な目的は、これ.
素数判定法 2011/6/20.
フーリエ係数の性質. どこまで足す? 理想的には無限大であるが、実際に はそれは出来ない これをフーリエ解析してみる.
1章 行列と行列式.
フーリエ級数. 一般的な波はこのように表せる a,b をフーリエ級数とい う 比率:
プログラミング入門2 第4回 式文 代入式 論理演算子 ループの脱出、スキップ 情報工学科 篠埜 功.
3.エントロピーの性質と各種情報量.
9.通信路符号化手法1 (誤り検出と誤り訂正の原理)
Excelによる積分.
1 6.低次の行列式とその応用. 2 行列式とは 行列式とは、正方行列の特徴を表す一つのスカ ラーである。すなわち、行列式は正方行列からスカ ラーに写す写像の一種とみなすこともできる。 正方行列 スカラー(実数) の行列に対する行列式を、 次の行列式という。 行列 の行列式を とも表す。 行列式と行列の記号.
計算のスピードアップ コンピュータでも、sin、cosの計算は大変です 足し算、引き算、掛け算、割り算は早いです
線形符号(10章).
1 0章 数学基礎. 2 ( 定義)集合 集合については、 3セメスタ開講の「離散数学」で詳しく扱う。 集合 大学では、高校より厳密に議論を行う。そのために、議論の 対象を明確にする必要がある。 ある “ もの ” (基本的な対象、概念)の集まりを、 集合という。 集合に含まれる “ もの ” を、集合の要素または元という。
10.PとNP完全問題との境界.
複素数.
4.プッシュダウンオートマトンと 文脈自由文法の等価性
1 0章 数学基礎. 2 ( 定義)集合 集合については、 3セメスタ開講の「離散数学」で詳しく扱う。 集合 大学では、高校より厳密に議論を行う。そのために、議論の 対象を明確にする必要がある。 ある “ もの ” (基本的な対象、概念)の集まりを、 集合という。 集合に含まれる “ もの ” を、集合の要素または元という。
信号測定. 正弦波 多くの場合正弦波は 0V の上下で振動する しかし、これでは AD 変換器に入れら れないので、オフ セットを調整して データを取った.
1 9.線形写像. 2 ここでは、行列の積によって、写像を 定義できることをみていく。 また、行列の積によって定義される写 像の性質を調べていく。
通信路(7章).
3.プッシュダウンオートマトンと 文脈自由文法
6.符号化法(6章).
ビット. 十進数と二進数 十進数  0から9までの数字を使って 0、1、2、3、4、5、6、7、8、9、 10、11、12 と数える 二進数  0と1を使って 0、1、10、11、100、101、11 0、111 と数える.
アルゴリズムとデータ構造 補足資料14-1 「ハッシュ法」
正弦波.
3.正方行列(単位行列、逆行列、対称行列、交代行列)
年度 情報数理学. 2 履修にあたって 2009 年度 大学院奇数セメスター(前期)開講 K336→ 大学院棟 D 416(次回から)教室: 時限: 火曜日3時限( 12:50 - 14:20 ) 担当 草苅良至 4/21( 火) 休講 → 補講 ?/? ? 時限 D416.
様々な情報源(4章).
プログラミング演習B ML編 第3回 2010/6/15 (コミ) 2010/6/16 (情報・知能) 住井 ~sumii/class/proenb2010/ml3/
論理回路 第1回. 今日の内容 論理回路とは? 本講義の位置づけ,達成目標 講義スケジュールと内容 受講時の注意事項 成績の評価方法.
方程式を「算木」で 解いてみよう! 愛媛大学 教育学部 平田 浩一.
データベース入門 日進高等学校 情報化推進委員会. 表計算ソフトとの比較 表計算ソフト (Excel) データベース ( Access ) 編集 二人目はデータの編集が ロックされる 複数の人が同時にデータ を 編集できる 信頼性 ファイルの数だけ データが存在する データは一つ データ処理 自由.
C言語応用 構造体.
測定における誤差 KEK 猪野 隆 論文は、自ら書くもの 誤差は、自分で定義するもの ただし、この定義は、 多数の人に納得してもらえるものであること.
階層分析法. 表3. 1 ルートR1R1 R2R2 R3R3 R4R4 R5R5 F1F1 最寄駅までの所要 時間(分) 10 7 F2F2 実乗車時間(分) F3F3 片道切符(円) ヶ月定期(円) 11,21011,9309,75012,46012,720.
プログラミング演習B ML編 第3回 2006/7/4 (通信コース) 2006/7/12 (情報コース) 住井 ~sumii/class/proenb2006/ml3/
HKS Analysis Log Jul 2006 Part1 D.Kawama. 第壱部 HKS Sieve Slit Analysis.
1 プログラミング言語論 第13回 プログラムの意味論と検証 (2) 表示的意味論 担当:犬塚. 2 表示的意味論 denotational semantics  表示的意味論では、プログラムの要素とそれが 意味するものを対応付ける。 変数 式 文 A B … A+2 2B+C A:=A+2 if.
プログラミング言語論 第9回 論理型プログラミング言語 担当:犬塚.
プログラミングⅠ( 2 組) 第 1 回 / pLB1.pptx.
8.任意のデータ構造 (グラフの表現とアルゴリズム)
プログラミング入門2 第3回 複合文、繰り返し 情報工学科 篠埜 功.
第14回 プログラムの意味論と検証(3) 不動点意味論 担当:犬塚
実験5 規則波 C0XXXX 石黒 ○○ C0XXXX 杉浦 ○○ C0XXXX 大杉 ○○ C0XXXX 高柳 ○○ C0XXXX 岡田 ○○ C0XXXX 藤江 ○○ C0XXXX 尾形 ○○ C0XXXX 足立 ○○
1 アルゴリズムの高速化. 2 アルゴリズムにおける 大幅な性能アップ 多項式時間アルゴリズム VS 対数時間アルゴリズム (最大公約数の問題) 指数時間アルゴリズム VS 多項式時間アルゴリズム (フィボナッチ数列を求める問題)
携帯電話でのコミュニ ケーションについて 1班真田 出水 佐伯 堺. 仮説  女性のほうが携帯電話を使ったコミュニ ケーションを重要視する。
音の変化を視覚化する サウンドプレイヤーの作成
プログラミングの基礎知識 プログラミングの手順と重要概念 アルゴリズム. プログラミングの手順 コーディング エディタなどでコードを記述 コンパイル・インタープリタ 実行可能な形に翻訳 デバッグ(虫取り、不具合の調整) 完成!
Self-efficacy(自己効力感)について
11万km上空のかぐやから見た地球. デジタル信号処理 Digital Signal Processing 2010 年度春学期 Spring Semester, 2010 担当者: 栗濱 忠司( Professor ) 第3週第3週.
東北大学 情報科学研究科 システム情報科学専攻 TOKUYAMA Lab. 1 左順序付き柔軟ラベリングの実 装 Implementation of Left-part ordered Flexible Labeling 東北大学大学院 情報科学研究科 ◎小池 敦 徳山 豪.
知能ソフトウェア特論 項書換え系(3) 合流性 Term Rewriting Systems(3) Confluence Intelligent Software.
地球儀と様々な地図. 1 球体としての地球 こうした現象はあることをイ メージすると理解できる。
Presentation transcript:

3.多項式計算アルゴリズム べき乗の計算 多項式の計算

入力: (ここで、入力サイズは、 とします。) 出力: 3-1:べき乗問題 入力: (ここで、入力サイズは、   とします。) 出力:

素朴なべき乗の求め方 アィディア      を繰り返し、   回乗算する。

f=1.0; for(i=0;i<N;i++){ f=f*x; } return f; アルゴリズムnaïve_pow(x,n) 初期化が重要 f=1.0; for(i=0;i<N;i++){ f=f*x; } return f;

アルゴリズムnaïve_powの正当性。 (ほとんど明らかだが、証明することもできる。) 練習 正当性を帰納法で証明するためには、どのような命題を設定すればよいか?

アルゴリズムnaïve_powの時間計算量 高々   回の繰り返し。 各繰り返し中では、1回の乗算と、1回の 代入が行われているだけである。 の時間計算量である。

数学の記号とプログラム for( ; ;i++){ f=f* ; } for( ; ;i++){ f=f+ ; }

高速なべき乗の求め方。 注意 アィディア とりあえず、入力に制限を加える が2のべき乗と仮定する。すなわち、   が2のべき乗と仮定する。すなわち、 アィディア 倍、倍に計算した方が高速にもとまる。 (一方、                )

f=x; for(i=1;i<k;i++){ f=f*f; } return f; アルゴリズムfast_pow(x,n)

命題FP1(fast_powの正当性) forループが k回繰り返されたとき、 fの値は、 である。 証明 繰り返し回数kによる帰納法による。 繰り返し回数kのときのfの値を   と表す。 基礎: アルゴリズム中のステップ1より、      である。 一方、右辺= よって、命題は成り立つ。

帰納:         なる全ての    に対して、 命題が成り立つと仮定する(帰納法の仮定) として、      回の繰り返しで、 である。よって、   回めの繰り返しでは、

fast_powの時間計算量 アルゴリズムは、明らかに、k回繰り返す。 繰り返し中は、1回の乗算しか行っていない。 したがって、 の時間計算量である。 なので、結局 の時間計算量である。

一般の自然数に対する高速なべき乗アルゴリズム が2のべき乗でないときを考える。 このとき、前の高速なべき乗アルゴリズムを サブルーチンとして用いることができる。 の2進数表現を次のように表す。

このとき、     は次のように表せる。 これより、一般のnに対する高速なアルゴリズムが 得られる。

f=1.0; nを2進数 に変換する。 for(i=0;i<m;i++){ if( ){ f=f*fast_pow(x, ); } アルゴリズムgeneral_fast_pow(x,n) 入力:x,n(nは一般の数) 出力:xのn乗 f=1.0; nを2進数           に変換する。 for(i=0;i<m;i++){ if( ){ f=f*fast_pow(x, ); } return f;

3-2:多項式の計算 入力: (ここで、入力サイズは、   とします。) 出力:

素朴な多項式の求め方 アィディア  各項を素朴な乗算で計算し、    総和を求める。

fx=0; for(i=0;i<=N;i++){ tmp=a[i]; for(j=0;j<i;j++){ tmp=tmp*x; } アルゴリズムnaive_poly() 入力:x,次数n,係数a[n] 出力: fx=0; for(i=0;i<=N;i++){ tmp=a[i]; for(j=0;j<i;j++){ tmp=tmp*x; } fx=fx+tmp; return fx; 3-6は、 第i項の計算

素朴な多項式計算アルゴリズム の正当性 命題NP1(naive_polyの正当性1) 2.のforループが i回繰り返されたとき、 tmpの値は、 である。

証明 アルゴリズム中のステップ3より、      に設定される。 また、4の繰り返しは明らかにi回である。 したがって、     はi回乗算される。 よって、 より厳密な帰納法でも 証明できる。 である。

命題NP2(naive_polyの正当性2) naïve_polyは を計算する。 証明 次数  に関する帰納法による。 基礎 であり正しい。 帰納 の時正しいと仮定する。

が成り立つ。 回目の繰り返しでは、 なので、 とする。 n-1の繰り返しのときのfxの値を    と書く。 このとき、帰納法の仮定より、 が成り立つ。  回目の繰り返しでは、     なので、 (命題PL1より) また、ステップ7より、

ステップ5の部分が最も時間を多く繰り返される。 素朴な多項式計算アルゴリズム の計算時間 ステップ5の部分が最も時間を多く繰り返される。 ステップ4のforループは、 の値にしたがって、   回繰り返される。 よって、時間計算量を     とすると、     は、次のように計算できる。

以上から、naive_polyの最悪時間計算量は、 であることがわかる。 また、繰り返し回数は、入力サイズ(n)だけに依存し、 問題例(係数配列の状態)に依存しない。 よって、 の時間計算量を持つこともわかる。

補足:べき乗に高速なアルゴリズムを用いた場合 と計算できるので、          のアルゴリズムといえる。 (べき乗の計算に、mathライブラリのpowを用いた場合、 この計算量になると考えられる。)

ホーナーの方法 アィディア  xをできるだけくくりだしながら計算する。

アルゴリズムを示すまえに、等式の正当性を証明する。 命題H1(hornerの正当性1) 証明 に対して、 と定義する。

このとき、各関数は次のような系列になる。 この      に関して、 次式を   に関する帰納法で命題を証明する。

基礎 であり、満たされる。 帰納         なる全ての   で と仮定する。(帰納法の仮定) として

このとき、 帰納法の仮定を 用いている。 よって、命題は成り立つ。

ホーナーの方法の計算手順

horner(int k,double x){ if(k==0){ return a[n]; }else アルゴリズムhorner_poly() 入力:x,次数n,係数a[n] 出力: horner(int k,double x){ if(k==0){ return a[n]; }else f_k=a[n-k]+horner(k-1,x)*x; return f_k; }

ホーナーの方法の計算時間 計算時間を とすると次の漸化式を満たす。 ここで、 を加算に必要な計算時間とし、 計算時間を     とすると次の漸化式を満たす。 ここで、   を加算に必要な計算時間とし、         を乗算に必要な計算時間としている。              とすると、次のようにかける。 

これより、 よって、ホーナーの方法による多項式の計算は、 線形時間アルゴリズムである。

このアルゴリズムも明らかに線形時間で実行される。 ホーナーの方法の繰り返し版 ホーナーの方法は、次のように、繰り返しを用いても 実現できる。 horner(int k,double x){ double f_k=a[n]; for(k=1;k<=n;k++){ f_k=a[N-k]+( f_k )*x; } return f_k; このアルゴリズムも明らかに線形時間で実行される。