From 34159a9813d87b03c95b5a2a7d44af7ddb145784 Mon Sep 17 00:00:00 2001 From: Hiroaki Ogasawara <13391129+xhiroga@users.noreply.github.com> Date: Mon, 19 Aug 2024 10:05:11 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=89=B5=E9=80=A0=E6=83=85=E5=A0=B1?= =?UTF-8?q?=E3=81=AB=E9=96=A2=E3=81=99=E3=82=8B=E9=81=8E=E5=8E=BB=E5=95=8F?= =?UTF-8?q?=E3=81=AE=E6=89=93=E3=81=A1=E8=BE=BC=E3=81=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../computer-architecture/README.md | 2 +- .../data-structures-algorithms/README.md | 9 +-- computer-science/network/README.md | 18 +++-- exercises/utokyo-ist/README.md | 38 ++++++----- exercises/utokyo-ist/ci/2013-08-3.md | 46 +++++++++++++ exercises/utokyo-ist/ci/2014-08-2.md | 52 ++++++++++++++ exercises/utokyo-ist/ci/2015-08-3.md | 50 ++++++++++++++ exercises/utokyo-ist/ci/2016-08-2.md | 67 +++++++++++++++++++ exercises/utokyo-ist/ci/2023-08-1.md | 3 +- exercises/utokyo-ist/ice/2018-08-4.md | 47 +++++++++++++ exercises/utokyo-ist/ice/2020-08-4.md | 30 +++++++++ exercises/utokyo-ist/ice/2022-08-4.md | 28 ++++++++ exercises/utokyo-ist/ice/2023-08-5.md | 62 +++++++++++++++++ exercises/utokyo-ist/isi/2018-08-2b.md | 13 ++++ 14 files changed, 438 insertions(+), 27 deletions(-) create mode 100644 exercises/utokyo-ist/ci/2013-08-3.md create mode 100644 exercises/utokyo-ist/ci/2014-08-2.md create mode 100644 exercises/utokyo-ist/ci/2015-08-3.md create mode 100644 exercises/utokyo-ist/ci/2016-08-2.md create mode 100644 exercises/utokyo-ist/ice/2018-08-4.md create mode 100644 exercises/utokyo-ist/ice/2020-08-4.md create mode 100644 exercises/utokyo-ist/ice/2022-08-4.md create mode 100644 exercises/utokyo-ist/ice/2023-08-5.md create mode 100644 exercises/utokyo-ist/isi/2018-08-2b.md diff --git a/computer-science/computer-architecture/README.md b/computer-science/computer-architecture/README.md index 33ef18c30..85d9fcb4d 100644 --- a/computer-science/computer-architecture/README.md +++ b/computer-science/computer-architecture/README.md @@ -24,7 +24,7 @@ ### 基数変換 (radix conversion) -n進数→10進数は次のように考える。4,000(よんせん)は40 00(よんじゅう ひゃく)と考えることができる。同様に、0.05 = 5厘(ごりん)は0.5分(れいてんごぶ)とも考えられる。このように、指数の絶対値が大きい桁の数字による数は、指数の絶対値が小さい桁の数字でも表せる。n進数→10進数の変換では、$n^{|m|}$の倍数を$n^{|m-1|}$の倍数で表す操作を繰り返す。 +n進数→10進数は次のように考える。4,000(よんせん)は40 00(よんじゅう ひゃく)と考えることができる。同様に、0.05 = 5厘(ごりん)は0.5分(れいてんごぶ)とも考えられる。このように、指数の絶対値が大きい桁の数字による数は、指数の絶対値が小さい桁の数字でも表せる。n進数→10進数の変換では、$n^{|m|}$の倍数を$n^{|m|-1}$の倍数で表す操作を繰り返す。 また、10進数→n進数は次のように考える。指数の絶対値が小さい桁の数は、指数の絶対値が大きい桁の数としては表すことができない。(ここで4は0.4 10と言い出すとややこしいので一旦考えない)そのため、nで割って/掛けて、余り/整数部を指数の絶対値が小さい桁の数にする。 diff --git a/computer-science/data-structures-algorithms/README.md b/computer-science/data-structures-algorithms/README.md index d6d39c8e3..f2f6c8627 100644 --- a/computer-science/data-structures-algorithms/README.md +++ b/computer-science/data-structures-algorithms/README.md @@ -49,7 +49,7 @@ それぞれのPythonにおける実装とデータ追加・削除の操作をまとめた。(`pop()`するのはスタック?キュー?といつも迷うので) | データ構造\実装 | list | collections.deque | queue.Queue | -| --------------- | ---------------------------------------- | ------------------------------------------- | +| --------------- | ---------------------------------------- | ------------------------------------------- | ---------------------------- | | スタック | 追加: append(), 取り出し: pop() | 追加: append(), 取り出し: pop() | - | | キュー | 追加: append(), 取り出し: pop(0) | 追加: append(), 取り出し: popleft() | 追加: put(), 取り出し: get() | | 両端キュー | 追加: append(), 取り出し: pop() / pop(0) | 追加: append(), 取り出し: pop() / popleft() | - | @@ -75,7 +75,7 @@ 集合を木構造で表したとき、同じ集合に属しているか?を調べるのは根を求めることに等しく、計算量が$O(N)$となりえる。 -しかし、union by rank を行うことで$O(log N) に、さらに経路圧縮を行うことで$O(α(N))$となる。$α(N)$はアッカーマンの逆関数と呼ばれ、増加がとても遅いことで知られる。[^union_find] +しかし、union by rank を行うことで$O(log N)$ に、さらに経路圧縮を行うことで$O(α(N))$となる。$α(N)$はアッカーマンの逆関数と呼ばれ、増加がとても遅いことで知られる。[^union_find] - union by rank: 2つの木を合体させるとき、背の高い木に背の低い木をつなげる - 経路圧縮: find処理時、中間節点を全て根に繋ぎなおす @@ -101,8 +101,9 @@ [ハッシュ探索②(オープンアドレス法) | Programming Place Plus アルゴリズムとデータ構造編【探索アルゴリズム】 第7章](https://programming-place.net/ppp/contents/algorithm/search/007.html#linear_probing) > [!NOTE] オープンアドレス法って、ハッシュ値を削除したら、同じハッシュ値で再ハッシュされた値を探せなくならない? -> なる。したがって、ハッシュ値の削除時には空の番地であることを示す値をいれる。この値をTombstone (墓石)という。[kumagi^2023] -[kumagi^2023]: [あなたの知らないハッシュテーブルの世界](https://www.docswell.com/s/kumagi/ZGXXRJ-hash-table-world-which-you-dont-know#p20) +> なる。したがって、ハッシュ値の削除時には空の番地であることを示す値をいれる。この値をTombstone (墓石)という。[^kumagi_2023] + +[^kumagi_2023]: [あなたの知らないハッシュテーブルの世界](https://www.docswell.com/s/kumagi/ZGXXRJ-hash-table-world-which-you-dont-know#p20) ## 基礎的なアルゴリズム (algorithms) diff --git a/computer-science/network/README.md b/computer-science/network/README.md index 330eaf738..8b175ee62 100644 --- a/computer-science/network/README.md +++ b/computer-science/network/README.md @@ -57,7 +57,10 @@ [^node]: なお、リンク層ではノードをステーションと呼ぶことが多い。 -CSMA方式に対して、積極的にデータの衝突を検知するよう改良されたCSMA/CD(CSMA with Collision Detection)方式がある。CSMA/CD方式は主に有線LANでの通信で用いられる。早いもの勝ちで通信を開始した後も、他のノードが通信していないかの監視を続け、競合を見つけたら直ちに通信を中止する。その後、ランダムな時間待ってから再送を行う。 +CSMA方式に対して、積極的にデータの衝突を検知するよう改良されたCSMA/CD(CSMA with Collision Detection)方式がある。CSMA/CD方式は主に有線LANでの通信で用いられる。 + +CSMA方式では、他のノードが送信中のときは送信を待つ。したがって、他のノードの送信が終了した直後に衝突が発生しやすい。CSMA/CD方式は、フレーム送信中の衝突を検知する仕組みを備えているが、特にフレームの先頭で衝突が発生した場合を検知したい。フレームの先頭が衝突したことを検知するのにかかる最悪時間は往復の伝送速度だから、フレームサイズを往復の伝送にかかるサイズよりも大きくすることで、自然とフレーム先頭の衝突に備えることができる。[^xtech_2006]また、通信を開始した後も、他のノードが通信していないかの監視を続け、競合を見つけたら直ちに通信を中止する。その後、ランダムな時間待ってから再送を行う。 +[^xtech_2006]: [イーサネットの基本原理(2),フレーム間ギャップと最短フレーム長の存在意義](https://xtech.nikkei.com/it/article/COLUMN/20060523/238716/) 無線LANのアクセス制御方式としてはCSMA/CA (CSMA with Collision Avoidance)がある。無線通信では、送信中は自身の信号が強いため、他の弱い信号を検出できない。したがって、CSMA/CD形式のように、送信中に衝突を検知することが難しい。そのため、CSMA/CA形式では、衝突が起きやすい条件で衝突を予防する。具体的には、送信を開始する前に通信路が使用中かを検知して、実際に使用中だった場合、他にも待っているノードがいる可能性があるため、ランダムな時間待ってから送信を開始する。 @@ -132,8 +135,6 @@ IPv4を延命するための技術としての説明をよく見かけるが、 ##### NAT Traversal - - ##### UDP hole punching ### IPv6 @@ -269,6 +270,8 @@ default 192.168.1.1 LAN2(DHCP) static | IGPs | マルチキャスト | リンク状態型 | MOSPF | | EGPs | ユニキャスト | パスベクトル型 | BGP | +距離ベクトルはディスタンスベクター、リンク状態はリンクステートともいい、表記揺れがある。 + > [!NOTE] IGPsとEGPsを分けたとしても、IPヘッダを見てパケットを転送する以上は、EGPsスピーカーではないルーターも巨大な経路制御表を持つことにならない? > たしかにEGPsでやり取りされる経路制御表は巨大である。ISPの数で考えてもほとんどAS番号と同じだけ(約10万)存在する上、ISPの保有するIPアドレスのネットワーク部が飛び地のために経路集約できないことも普通だから、フルBGPテーブルのエントリは100万以上になる。しかし、ISPでEGPsスピーカー(以降エッジルーター)同士をつなぐルーターが必ずしもハブのような役割を果たすわけではないらしい。むしろエッジルーターが転送先のルーターを慎重に選ぶことで、転送先のルーターがパケットをデフォルトゲートウェイとなる別のエッジルーターに転送するだけで済むようになっているようだ。[^nikkei_2007] [^nikkei_2007]: [IPパケットはプロバイダ内をどのように転送されるのか](https://xtech.nikkei.com/it/article/COLUMN/20071009/284027/) @@ -277,9 +280,12 @@ default 192.168.1.1 LAN2(DHCP) static ホストは自分が知っている経路制御表を30秒ごとにブロードキャストする。経路制御表を受け取ったホストは、受け取った経路情報で自分が持っていた経路情報を更新し、それをブロードキャストする。このアルゴリズムはベルマン・フォード法に則っている。 +距離ベクトル型プロトコルでは、誤った経路情報を設定してしまった場合、メトリックが無限に増大する恐れがある。例えば、ルーターAが実際には接続していないネットワークXへのホップ数を1としてルーターBに通知した場合、ルーターBはルーターXへのホップ数を2としてAに再び通知する。ルーターAは実際にはネットワークXに接続していないので、ホップ数を3にして再び通知してしまい、無限ループが発生する。これを無限カウント問題という。無限カウント問題を避けるため、RIPでは最大ホップ数を15に設定している。 + ### OSPF -各ルーターはAS内のネットワーク構造をグラフとして持つ。グラフを更新次第、ルーターは各宛先への最短距離をダイクストラ法で計算し、ネクストホップをルーティングテーブルに登録する。 +各ルーターはAS内のネットワーク構造をグラフとして持つ。各ルーターはグラフの情報を受け取ったら、中身を読む前に隣接する全てのルーターに情報をコピーして配信する。これをフラッディング(flooding)という。[^takagi_2010]グラフを更新次第、ルーターは各宛先への最短距離をダイクストラ法で計算し、ネクストホップをルーティングテーブルに登録する。経路情報の操作が難しいため、エリア間での利用には適さない(逆にIGPsとして運用する分には問題ない)。 +[^takagi_2010]: [ディスタンスベクターとリンクステート](https://gihyo.jp/admin/serial/01/net_prac_tech/0011) 最短経路について、RIPではルーターのホップ数で計算していたが、OSPFではサブネット毎に自由にコストを付与できる。例えば、LANケーブルが古いなどで遅いネットワークではコストを重くする運用が考えられる。 @@ -287,9 +293,9 @@ default 192.168.1.1 LAN2(DHCP) static ISOで標準化されている、OSPFの基になった経路制御プロトコル。 -### BPG +### BGP -AS間の通信経路を定めるために用いるプロトコル。パスベクトル型といい、向きと距離だけでなく、途中で経過するAS番号も全て持っている。それにより、無限カウントを避けたり、ポリシーによってパケット毎に経路を選んだりしやすくなる。 +AS間の通信経路を定めるために用いるプロトコル。パスベクトル型といい、向きと距離だけでなく、途中で経過するAS番号も全て持っている。これにより、ルーティングループによる無限カウント問題を回避できる。無限カウント問題とは、ルーティング情報が永遠にループし続け、メトリック値が際限なく増加する現象だ。BGPでは、自身のAS番号がすでにパス内に存在する経路を受け取った場合、その経路を破棄することでループを防ぐ。また、AS番号の列を参照することで、管理者はより柔軟なポリシーを設定でき、セキュリティや経済的な要因に基づいてパケット毎に最適な経路を選択しやすくなる。 > [!NOTE] 全ASとの通信経路を持っているとしたら、エントリ数が膨大にならない? > なる。AS番号は約10万だが、エントリ数は100万行以上に達する。したがって、経路表は差分更新を行っている。 diff --git a/exercises/utokyo-ist/README.md b/exercises/utokyo-ist/README.md index 51670dd8f..c762aa8bd 100644 --- a/exercises/utokyo-ist/README.md +++ b/exercises/utokyo-ist/README.md @@ -35,33 +35,41 @@ | CI | 2018 | 2017-08 | 創造情報学 | [1](./ci/2017-08-1.md) | 機械学習 | 決定木 | | CI | 2018 | 2017-08 | 創造情報学 | [2](./ci/2017-08-2.md) | 制御工学 | 動力学, PID制御 | | CI | 2017 | 2016-08 | 創造情報学 | [1](./ci/2016-08-1.md) | 機械学習 | 強化学習, マルコフ決定過程 | -| CI | 2017 | 2016-08 | 創造情報学 | 2 | 論理回路 | 順序回路 | +| CI | 2017 | 2016-08 | 創造情報学 | [2](./ci/2016-08-2.md) | 論理回路 | 順序回路 | | CI | 2016 | 2015-08 | 創造情報学 | 1 | 論理回路 | 組み合せ回路, 桁上げ | | CI | 2016 | 2015-08 | 創造情報学 | [2](./ci/2015-08-2.md) | ネットワーク, アルゴリズム | TCP/IP, 経路制御 | -| CI | 2016 | 2015-08 | 創造情報学 | 3 | CG | WIP | -| CI | 2015 | 2014-08 | 創造情報学 | 1 | アルゴリズム | WIP | -| CI | 2015 | 2014-08 | 創造情報学 | 2 | ネットワーク, 確率過程 | マルコフ連鎖 | +| CI | 2016 | 2015-08 | 創造情報学 | [3](./ci/2015-08-3.md) | CG | モンテカルロ積分 | +| CI | 2015 | 2014-08 | 創造情報学 | 1 | アルゴリズム | ソート | +| CI | 2015 | 2014-08 | 創造情報学 | [2](./ci/2014-08-2.md) | ネットワーク, 確率過程 | マルコフ連鎖 | | CI | 2014 | 2013-08 | 創造情報学 | [1](./ci/2013-08-1.md) | 機械学習 | 最尤推定法 | -| CI | 2014 | 2013-08 | 創造情報学 | 3 | CV, 機械学習 | k最近謗法, k平均法 | +| CI | 2014 | 2013-08 | 創造情報学 | [3](./ci/2013-08-3.md) | CV, 機械学習 | CNN, k最近謗法 | +| CI | 2013 | 2012-08 | 創造情報学 | 1 | アルゴリズム | 組合せ最適化 | | CI | 2013 | 2012-08 | 創造情報学 | [3](./ci/2012-08-3.md) | ロボティクス, CG, 線形代数 | ベクトル, 変換行列 | +| CS | 2024 | 2023-08 | 専門科目 | 3 | アルゴリズム | グラフ | +| CS | 2022 | 2022-02 | 専門科目 | 4 | 論理回路 | D-FF | +| CS | 2022 | 2021-08 | 専門科目 | 2 | アルゴリズム | ソート | +| CS | 2021 | 2021-02 | 専門科目 | 1 | アルゴリズム | バイナリ木 | | CS | 2021 | 2020-08 | 専門科目1 | [4](./cs/2020-08-s1-4.md) | 機械学習 | 最小二乗法 | -| CS | 2020 | 2019-08 | 専門科目2 | 2 | 機械学習 | WIP | -| CS | 2020 | 2019-08 | 専門科目2 | 6 | 確率統計 | WIP | +| CS | 2020 | 2019-08 | 専門科目2 | 2 | 機械学習, 自然言語処理 | WIP | +| CS | 2020 | 2019-08 | 専門科目2 | 6 | 機械学習 | EMアルゴリズム | | CS | 2019 | 2018-08 | 専門科目2 | 1 | 線形代数 | WIP | -| CS | 2019 | 2018-08 | 専門科目2 | 2 | 確率統計 | WIP | +| CS | 2019 | 2018-08 | 専門科目2 | 2 | 確率統計, 機械学習 | 最尤推定法, 正則化 | +| CS | 2018 | 2017-08 | 専門科目1 | 1 | アルゴリズム | グラフ, ダイクストラ法 | | CS | 2018 | 2017-08 | 専門科目2 | 5 | 機械学習 | WIP | -| CS | 2017 | 2016-08 | 専門科目 | 5 | 確率統計 | WIP | +| CS | 2017 | 2016-08 | 専門科目2 | 3 | アルゴリズム | 動的計画法 | +| CS | 2017 | 2016-08 | 専門科目2 | 5 | 確率統計 | WIP | | CS | 2016 | 2015-08 | 専門科目 | 1 | 機械学習 | WIP | | CS | 2015 | 2014-08 | 専門科目1 | 1 | 確率統計 | WIP | -| CS | 2014 | 2013-08 | 専門科目2 | 1 | CG | WIP | +| CS | 2015 | 2014-08 | 専門科目1 | 3 | アルゴリズム | 動的計画法 | +| CS | 2014 | 2013-08 | 専門科目2 | 3 | 確率統計 | WIP | | CS | 2013 | 2012-08 | 専門科目1 | 1 | 線形代数 | WIP | | CS | 2013 | 2012-08 | 専門科目1 | 3 | 確率統計 | WIP | | CS | 2013 | 2012-08 | 専門科目2 | 1 | 線形代数 | WIP | -| ICE | 2024 | 2023-08 | 電子情報学 | 5 | 符号理論, 確率過程 | WIP | -| ICE | 2023 | 2022-08 | 電子情報学 | 4 | ネットワーク, 経路制御 | WIP | +| ICE | 2024 | 2023-08 | 電子情報学 | [5](./ice/2023-08-5.md) | 情報理論, 確率過程 | エントロピー, ハフマン符号 | +| ICE | 2023 | 2022-08 | 電子情報学 | [4](./ice/2022-08-4.md) | ネットワーク, 経路制御 | WIP | | ICE | 2021 | 2020-08 | 電子情報学 | 3 | アルゴリズム | Union-Find | -| ICE | 2021 | 2020-08 | 電子情報学 | 4 | ネットワーク, 確率過程 | マルコフ連鎖 | -| ICE | 2019 | 2018-08 | 電子情報学 | 4 | ネットワーク, リンク層 | WIP | +| ICE | 2021 | 2020-08 | 電子情報学 | [4](./ice/2020-08-4.md) | ネットワーク | TCP/IP | +| ICE | 2019 | 2018-08 | 電子情報学 | [4](./ice/2018-08-4.md) | ネットワーク, リンク層 | WIP | | ICE | 2018 | 2017-08 | 電子情報学 | [4](./ice/2017-08-4.md) | ネットワーク | TCP/IP | | ICE | 2017 | 2016-08 | 電子情報学 | 5 | 符号理論, 確率過程 | WIP | | ICE | 2016 | 2015-08 | 電子情報学 | 4 | 符号理論 | WIP | @@ -71,4 +79,4 @@ | ICE | 2011 | 2010-08 | 電子情報学 | 4 | ネットワーク, リンク層 | WIP | | ICE | 2010 | 2009-08 | 電子情報学 | 5 | ネットワーク, 経路制御 | WIP | | ICE | 2008 | 2007-08 | 電子情報学 | 5 | ネットワーク, 確率過程 | 待ち行列 | -| ISI | 2019 | 2018-08 | 知能機械情報学 | 2B | ロボティクス, アルゴリズム | 経路探索, 四分木 | +| ISI | 2019 | 2018-08 | 知能機械情報学 | [2B](./isi/2018-08-2b.md) | ロボティクス, アルゴリズム | 経路探索, 四分木 | diff --git a/exercises/utokyo-ist/ci/2013-08-3.md b/exercises/utokyo-ist/ci/2013-08-3.md new file mode 100644 index 000000000..159643482 --- /dev/null +++ b/exercises/utokyo-ist/ci/2013-08-3.md @@ -0,0 +1,46 @@ +# 2014年度 創造情報学 第3問 + +## (1) + +CNNの畳み込み層を適用する問題。3x3のフィルタで中心がマイナス、上下左右がプラスであることから、カーブの検出を意図していると思われる。 + +フィルタの出力値は60となる。 + +## (2) + +CNNのプーリング層を適用した後、特徴量を検出する問題。 + +- (A): 面積 +- (B): 重心 + +| | M00 | M10 | +| --- | --- | --- | +| Y1 | 12 | 26 | +| Y2 | 11 | 28 | + +## (3) + +- k=1: 最近傍の点は(12,27)=Iのため、I +- k=3: 最近棒の点は(12,27)=I, (12,26)=C, (14,26)=Cのため、C + +## (4) + +k平均法のような問題。識別境界の方程式は次の通り。 + +$$ +y=x+15 +$$ + +識別方法としては、識別境界よりも上下のいずれにあるかを判定すれば良い。 + +$$ +\begin{align} +\text{if } y - x > 15 & \text{ then I} \\ +\text{else if } y - x < 15 & \text{ then C} +\end{align} +$$ + +## (5) + +- (3)の手法は、新しいデータが増える度に重心の計算をしなくて良い +- (4)の手法は、すべての点との距離を計算する必要が無いため、推論時の計算量が少ない diff --git a/exercises/utokyo-ist/ci/2014-08-2.md b/exercises/utokyo-ist/ci/2014-08-2.md new file mode 100644 index 000000000..fcacc198d --- /dev/null +++ b/exercises/utokyo-ist/ci/2014-08-2.md @@ -0,0 +1,52 @@ +# 2015年度 創造情報学 第2問 + +この解答ではパケットの受信と転送を同時に行い、元々バッファが埋まっていても転送によって空くのであれば新たにパケットが保存できるものとして解釈している。 + +## (1) + +パケット数がsとなる確率は次の通り。 + +$$ +p(s) = \binom{3}{s} \lambda^s(1-\lambda)^{(3-s)} +$$ + +到着パケット数sの期待値は次の通り。 + +$$ +\begin{align} +p(0) &= 1 * (1-\lambda)^3 \\ +p(1) &= 3 * \lambda * (1-\lambda)^2 \\ +p(2) &= 3 * \lambda^2 * (1-\lambda) \\ +p(3) &= 1 * \lambda^3 \\ +E[s] &= (1-\lambda)^3 + 3\lambda(1-\lambda)^2 + 3\lambda(1-\lambda)^2 + \lambda^3 +\end{align} +$$ + +## (2) + +(省略) + +## (3) + +パケット数の状態遷移における定常状態を求めれば良い。具体的には次の連立方程式を解くことで求められる。 + +$$ +\begin{align} +p(0) &= p(0|0) + p(0|1) \\ +p(1) &= p(1|0) + p(1|1) + p(1|2) \\ +p(2) &= p(2|0) + p(2|1) + p(2|2) + p(3|2) \\ +p(3) &= p(3|1) + p(3|2) + p(3|2) +\end{align} +$$ + +## (4) + +定常状態においてパケットの廃棄が起きる組み合わせの確率となる。 + +$$ +パケットの廃棄率 = p(2)\lambda^3 + p(3)(3\lambda^2(1-\lambda)+\lambda^3) +$$ + +## (5) + +(省略) diff --git a/exercises/utokyo-ist/ci/2015-08-3.md b/exercises/utokyo-ist/ci/2015-08-3.md new file mode 100644 index 000000000..612526399 --- /dev/null +++ b/exercises/utokyo-ist/ci/2015-08-3.md @@ -0,0 +1,50 @@ +# 2016年度 創造情報学 第3問 + +## (1) + +放射照度の式を変形し、一次元の定積分にする。 + +初めに、元の式は$\theta$に依存しないとあるため、次のように変形する。 + +$$ +\begin{align} +I &= \int_0^{2\pi} \int_0^{\frac{\pi}{2}} L(\theta, \phi) \cos\theta \sin\theta d\theta d\phi \\ +&= \int_0^{2\pi} \int_0^{\frac{\pi}{2}} L(\phi) \cos\theta \sin\theta d\theta d\phi \\ +&= \int_0^{2\pi} L(\phi) \int_0^{\frac{\pi}{2}} \cos\theta \sin\theta d\theta d\phi \\ +\end{align} +$$ + +次に、内部の積分を計算する。$\sin\theta = t$ とおく。 + +$$ +\begin{align} +&= \int_0^{\frac{\pi}{2}} \cos\theta \sin\theta d\theta \\ +&= \int_0^{\frac{\pi}{2}} \cos\theta t d\theta \\ +&= \int_0^{\sin\frac{\pi}{2}} \cos\theta t \frac{1}{t'} dt \\ +&= \int_0^1 \cos\theta t \frac{1}{\cos\theta} dt \\ +&= \int_0^1 t dt \\ +&= [\frac{1}{2}t^2]_0^1 \\ +&= \frac{1}{2} +\end{align} +$$ + +計算結果を元の式に代入することで、与えられた一次元の定積分が得られる。 + +$$ +\begin{align} +& \int_0^{2\pi} L(\phi) \frac{1}{2} d\phi \\ +&= \frac{1}{2} \int_0^{2\pi} L(\phi) d\phi +\end{align} +$$ + +## (2) + +積分の近似を長方形近似で求める問題。 + +$$ +I = \sum_{i=0}^{N-1} L(\phi_i) \frac{2\pi}{N} +$$ + +## (3) ~ (5) + +(未回答) diff --git a/exercises/utokyo-ist/ci/2016-08-2.md b/exercises/utokyo-ist/ci/2016-08-2.md new file mode 100644 index 000000000..fe2116f9b --- /dev/null +++ b/exercises/utokyo-ist/ci/2016-08-2.md @@ -0,0 +1,67 @@ +# 2017年度 創造情報学 第2問 + +## (1) + +(省略) + +## (2) + +(省略) + +## (3) + +| A | B | X | S | C | +| --- | --- | --- | --- | --- | +| 0 | 0 | 0 | 0 | 0 | +| 0 | 0 | 1 | 1 | 0 | +| 0 | 1 | 0 | 1 | 0 | +| 0 | 1 | 1 | 0 | 1 | +| 1 | 0 | 0 | 1 | 0 | +| 1 | 0 | 1 | 0 | 1 | +| 1 | 1 | 0 | 0 | 1 | +| 1 | 1 | 1 | 1 | 1 | + +## (4) + +```mermaid +flowchart LR + X:::io + A:::io + B:::io + S:::io + C:::io + ha1[HA] + ha2[HA] + or1[OR] + A-->ha1 + B-->ha1 + ha1--s-->ha2 + X-->ha2 + ha1--c-->or1 + ha2--c-->or1 + or1-->C + ha2-->S +classDef io fill:#fff,stroke-width:0px +``` + +## (5) + +各ビットごとに全加算器を設ける。ただしn>1ビットのとき、n-1ビット目の加算器の出力Cをnビット目の入力Xに接続する。 + +## (6) + +(省略) + +## (7) + +(省略) + +## (8) + +減算を、引く数の2の補数の加算として捉える。加算か減算かを伝える入力を1つ用意し、加算なら1、減算なら0が入力されるとする。減算なら引く数を反転させ、かつ最下位ビットの桁上りの形で1を足すことで、引く数を2の補数にする。 + +(回路図省略) + +## (9) + +(省略) diff --git a/exercises/utokyo-ist/ci/2023-08-1.md b/exercises/utokyo-ist/ci/2023-08-1.md index bebb0d0b1..d28ca002b 100644 --- a/exercises/utokyo-ist/ci/2023-08-1.md +++ b/exercises/utokyo-ist/ci/2023-08-1.md @@ -16,7 +16,8 @@ $$ $$ \begin{align} -\ln(\binom{N}{r}\theta^{r}(1-\theta)^{N-r}) =\ln\binom{N}{r} + r\ln\theta + (N-r)\ln(1-\theta) +& \ln(\binom{N}{r}\theta^{r}(1-\theta)^{N-r}) \\ +=& \ln\binom{N}{r} + r\ln\theta + (N-r)\ln(1-\theta) \end{align} $$ diff --git a/exercises/utokyo-ist/ice/2018-08-4.md b/exercises/utokyo-ist/ice/2018-08-4.md new file mode 100644 index 000000000..6523a1577 --- /dev/null +++ b/exercises/utokyo-ist/ice/2018-08-4.md @@ -0,0 +1,47 @@ +# 2019年度 電子情報学 第4問 + +## (1) + +CSMA/CDにおけるフレームサイズの最小長は、リンクの帯域遅延積(遅延は往復遅延)によって定まる。 + +片道遅延を求める。 + +$$ +\begin{align} +1\text{kmあたりの遅延} &= \frac{1}{2.0 * 10^5}\text{sec} \\ +&= \frac{0.5}{10^5}\text{sec} \\ +ケーブル長あたりの遅延 &= 2.5\text{km} * \frac{0.5}{10^5}\text{sec} \\ +&= \frac{1.25}{10^5}\text{sec} +\end{align} +$$ + +次に、帯域遅延積を求める。 + +$$ +\begin{align} +帯域遅延積 &= 10\text{Mbps} * \frac{1.25}{10^5}\text{sec} * 2\\ +&= 10^7\text{bps} * \frac{2.5}{10^5}\text{sec} \\ +&= 2.5 * 10^2 \text{bits} +\end{align} +$$ + +よって、フレームサイズの最小長は $2.5 * 10^2 \text{bits}$ となる。 + +## (2) + +べき乗バックオフアルゴリズムとは、衝突後に2の衝突回数に応じたべき乗と、ノードおよび衝突ごとにランダムに定まるタイムスロットの積だけ待つアルゴリズム。 + +- 利点: 再衝突が発生する度に待ち時間を指数関数的に伸ばすため、再衝突の可能性を減らすことができる +- 欠点: 回線が混雑している場合、待ち時間が非常に長くなる可能性がある + +## (3) + +(省略) + +## (4) + +無線通信では、同じ周波数帯を用いて送信と受信を行う。送信中は自分が送信している電波の影響が強いため、他のノードの電波を拾うことが難しい。従って送信中に衝突を検知することが難しい。 + +## (5) + +衝突後の再送信かどうかに関わらず、送信前にはバックオフ時間を設けることで、他のノードの通信終了を同時に待っていたノードとの衝突を避ける。 diff --git a/exercises/utokyo-ist/ice/2020-08-4.md b/exercises/utokyo-ist/ice/2020-08-4.md new file mode 100644 index 000000000..efce3b34a --- /dev/null +++ b/exercises/utokyo-ist/ice/2020-08-4.md @@ -0,0 +1,30 @@ +# 2021年度 電子情報学 第4問 + +## (1) + +リピータと違い、ブリッジはIP層の処理ができる。例えば、パケットのヘッダーから宛先のIPアドレスを読み取り、複数のリンクのうち宛先IPアドレスに近いリンクにのみパケットを転送できる。 + +## (2) + +ARP + +## (3) + +- 16個 +- ネットワークアドレスとブロードキャストアドレスを除く場合は14個 + +## (4) + +1. サブネットマスク +2. デフォルトゲートウェイ +3. DNSサーバーのアドレス + +## (5) + +- ping +- traceroute +- エラーハンドリングなど、IP通信自体に関わるメッセージの送受信 + +## (5) ~ (9) + +(未回答) diff --git a/exercises/utokyo-ist/ice/2022-08-4.md b/exercises/utokyo-ist/ice/2022-08-4.md new file mode 100644 index 000000000..6d6f60dbc --- /dev/null +++ b/exercises/utokyo-ist/ice/2022-08-4.md @@ -0,0 +1,28 @@ +# 2023年度 電子情報学 第4問 + +## (1) + +フラッディングでは、各ルータがネットワークのノードの接続状態(リンクステート)に関する同一の情報を共有する。各ルータはリンクステートを受け取り次第、ダイクストラ法などのアルゴリズムで経路表を構成する。 + +距離べクトル制御に比べて、経路情報の収束が早い点が利点といえる。 + +## (2) + +ルータは隣接ルータに対して、自分が知っているネットワークとそのネットワークまでのホップ数の情報を交換する。 + +## (3) + +- (a): ダイクストラ法 +- (b): OSPF + +## (4) + +BGPでは距離ベクトル型プロトコル異なり、経路に含まれるAS番号も交換する。これにより、受け取った経路にすでに自分のAS番号が含まれる場合に破棄することで、無限カウント問題を避けることができる。 + +## (5) + +ルータが誤った経路情報を通知するなどで、経路情報の交換にループが発生する問題を指す。例えばルータA,B,Cが相互に接続された状態で、ルータCがネットワークCに到達できなくなったとする。ルータAはルータCに対して、ネットワークCまでのホップ数が2である経路を渡す。本来ならルータCは経路情報の交換をストップさせるべきところ、ホップ数を3にして再び通知してしまう。このようなループを防ぐため、RIPではホップ数に上限が定められている。 + +## (6) ~ (8) + +(未回答) diff --git a/exercises/utokyo-ist/ice/2023-08-5.md b/exercises/utokyo-ist/ice/2023-08-5.md new file mode 100644 index 000000000..a31d56785 --- /dev/null +++ b/exercises/utokyo-ist/ice/2023-08-5.md @@ -0,0 +1,62 @@ +# 2024年度 電子情報学 第5問 + +## (1) + +```mermaid +flowchart LR +1 +2 +1--0.9-->1 +1--0.1-->2 +2--0.4-->1 +2--0.6-->2 +``` + +## (2) + +マルコフ過程の定常状態を求める問題(と難しく言わなくても連立方程式を立てれば解ける)。 + +$$ +\begin{bmatrix} +0.9 & 0.4\\ +0.1 & 0.6 +\end{bmatrix} +\begin{bmatrix} +P(0) \\ +P(1) +\end{bmatrix} = +\begin{bmatrix} +P(0) \\ +P(1) +\end{bmatrix} +$$ + +$$ +P(0) = 0.8, P(1) = 0.2 +$$ + +## (3) + +ここでエントロピーとは情報源に関する平均エントロピーであり、要するに確率と情報量の積和となる。 + +エントロピーの公式は次の通り。 + +$$ +H = - \sum_{i}P(x_i) \log_b P(x_i) +$$ + +次の通り解く。なお、問題文より$log_2 5 = 2.32$を利用する。 + +$$ +\begin{align} +H &= - (0.8 \log_2 \frac{4}{5} + 0.2 \log_2 \frac{1}{5}) \\ +&= - (0.8 (\log_2 4-\log_2 5) - 0.2 \log_2 5) \\ +&= - (0.8 * (-0.32) - 0.2 * 2.32) \\ +&= - (-0.26 - 0.46) \\ +&= 0.72 \\ +\end{align} +$$ + +## (4) ~ (9) + +(未回答) diff --git a/exercises/utokyo-ist/isi/2018-08-2b.md b/exercises/utokyo-ist/isi/2018-08-2b.md new file mode 100644 index 000000000..f2ea72c86 --- /dev/null +++ b/exercises/utokyo-ist/isi/2018-08-2b.md @@ -0,0 +1,13 @@ +# 2019年度 知能機械情報学 問題2B + +## 問1 ~ 問3 + +(省略) + +## 問4 + +(未回答) + +- 兄弟ノード, 従兄弟ノード, はとこノード... というように探索範囲を広げればよいと思われる +- 近いノードから探索し、かつ探索を適切に打ち切ることで効率を担保する +- 「近さ」の表し方を、周囲1マス, 2マス,...ではなく、四分木の順序を用いて表すのが重要な気がする