目次
59 関係: 力まかせ探索、参照の局所性、定数時間、常用対数、三角関数、三角法、九九、二分探索、土星の環、マルチプレクサ、ハミング重み、バックプロパゲーション、メモ化、メモリプール、ランダムアクセス、ループ展開、ローマ数字、ブーリアン型、ブール関数、プリフェッチ、ヒープソート、テーブルジャンプ、テイラー展開、データ構造、デジタル回路、ニューラルネットワーク、分割統治法、アーリヤバタ、キャラクタ (コンピュータ)、キャッシュ (コンピュータシステム)、コンパイラ最適化、コンピュータグラフィックス、コンピュータ断層撮影、シーケンシャルアクセス、ジョンズ・ホプキンズ大学、スタンフォード大学、サンスクリット、再実体化、内挿、入出力、C言語、確率分布、線形補間、線形探索、真理値表、統計学、画像処理、計算機科学、配列、連続写像、... インデックスを展開 (9 もっと) »
- コンピューターのパフォーマンス
- ソフトウェア最適化
力まかせ探索
力まかせ探索(ちからまかせたんさく、Brute-force search)またはしらみつぶし探索(Exhaustive search)は、単純だが非常に汎用的な計算機科学の問題解決法であり、全ての可能性のある解の候補を体系的に数えあげ、それぞれの解候補が問題の解となるかをチェックする方法である。 バックトラッキングと混同されやすいが、バックトラッキングでは解候補の大部分を明示的に探索することなく捨てることができる。例えば、エイト・クイーンは、8個のクイーンをチェスボード上で互いに取り合えない状態で配置するものである。力まかせ探索では 64! / 56!。
参照の局所性
参照の局所性(さんしょうのきょくしょせい、locality of reference)とは、1つのリソースに複数回アクセスする処理に関する情報工学上の概念である。
定数時間
定数時間(ていすうじかん、Constant time)は、計算複雑性理論における用語で、問題の計算にかかる時間が入力として与えられるデータの大きさに依存せず一定であることを指す。O(1) で表される。 例えば、配列のひとつの要素にアクセスするのにかかる時間は、その場所を指定する1つの命令(操作)だけでよいため、一般に定数時間である。しかし、ソートされていない配列から最小の要素を探す問題は定数時間ではなく、検索にそれなりの時間を要する。アルゴリズム(選択アルゴリズム)を工夫しない場合、その処理には線形時間すなわち O(n) の時間を要する。要素数が既知で変化しないなら、アルゴリズムによっては定数時間となるものもある。
常用対数
常用対数(じょうようたいすう、common logarithm)あるいはブリッグスの対数(Briggsian logarithm)は 10 を底とする対数のことである。
三角関数
三角関数(さんかくかんすう、trigonometric function)とは、平面三角法における、角度の大きさと線分の長さの関係を記述する関数の族、およびそれらを拡張して得られる関数の総称である。鋭角を扱う場合、三角関数の値は対応する直角三角形の二辺の長さの比(三角比)である。三角法に由来する三角関数という呼び名のほかに、単位円を用いた定義に由来する円関数(えんかんすう、circular function)という呼び名がある。 三角関数には以下の6つがある。なお、正弦、余弦、正接の3つのみを指して三角関数と呼ぶ場合もある。
三角法
三角法(さんかくほう)とは、三角形の角の大きさと辺の長さの間の関係の研究を基礎として、他の幾何学的図形の各要素の量的関係や、測量などへの応用を研究する数学の学問領域の一つである。様々な数学の分野の中でもきわめて古くから存在し、測量や天文学上の計算などの実用上の要求と密接に関連して生まれたものである(→歴史)。三角法と数表を用いることで、直接に測ることの難しい長さを良い精度で求めることができる(→応用分野)。三角法は平面三角法、球面三角法、その他の三角法に分けられる(→平面三角法、→球面三角法、→その他の三角法)。三角関数は歴史的には三角法から派生して生まれた関数である(→三角関数)。
九九
算数における九九(くく)とは自然数の乗法などの計算を表にまとめて語呂よく暗記する方法のことである。足し算九九や引き算九九や掛け算九九や割り算九九があるが、単に九九という場合は、普通1桁同士の掛け算九九を指す。また除数が1桁の割り算九九を八算(はっさん)、二桁を見一などという。
二分探索
二分探索(にぶんたんさく、binary search、BS)やバイナリサーチとは、ソート済み配列に対する探索アルゴリズムの一つ。
土星の環
2006年9月15日、土星食の日にカッシーニによって撮影された土星の環の全景(明るさは誇張されている)。メインリングの外側、G環のすぐ内側の10時の方角に「ペイル・ブルー・ドット」(地球)が見える。 構成する粒子の径に応じて彩色した画像 土星の環(どせいのわ)は、太陽系で最も顕著な惑星の環である。マイクロメートル (μm) 単位からメートル (m) 単位の無数の小さな粒子が集団になり、土星の周りを回っている。環の粒子はそのほぼ全てが「水の氷」で、わずかに塵やその他の物質が混入している。 環からの反射光によって土星の視等級が増すが、地球から裸眼で土星の環を見ることはできない。ガリレオ・ガリレイが最初に望遠鏡を空に向けた翌年の1610年、彼は人類で初めて土星の環を観測したが、ガリレオはそれが何であるかはっきり認識することはなかった。1655年、クリスティアーン・ホイヘンスは初めて、それが土星の周りのディスクであると記述した。
マルチプレクサ
マルチプレクサ、多重器、多重装置、多重化装置、合波器(multiplexer)は、ふたつ以上の入力をひとつの信号として出力する機構である。通信分野では多重通信の入口の装置、電気・電子回路では複数の電気信号をひとつの信号にする回路である。しばしばMUX等と略される。
ハミング重み
ハミング重み(ハミングおもみ、Hamming weight)とは、シンボル列中の 0 以外のシンボルの個数である。典型的には、ビット列中の1の個数として使われる。
バックプロパゲーション
バックプロパゲーション(Backpropagation)または誤差逆伝播法(ごさぎゃくでんぱほう)はニューラルネットワークの学習アルゴリズムである。
メモ化
メモ化(memoization)とは、プログラムの高速化のための最適化技法の一種であり、サブルーチン呼び出しの結果を後で再利用するために保持し、そのサブルーチン(関数)の呼び出し毎の再計算を防ぐ手法である。メモ化は構文解析などでも使われる(必ずしも高速化のためだけとは限らない)。キャッシュはより広範な用語であり、メモ化はキャッシュの限定的な形態を指す用語である。
メモリプール
メモリプール (Memory pools) は、en:固定サイズブロック割り当てとも呼ばれ、メモリ管理にを使用することで、mallocまたはC++のnew演算子に匹敵する動的メモリ確保を可能にするプール。 多くのリアルタイム・オペレーティング・システムは、トランザクション処理機能などのメモリプールを使用する。
ランダムアクセス
ランダムアクセス(Random Access)とは、記憶装置などのデータへのアクセス方式のひとつで、端から順番にアクセスするというシーケンシャルアクセスに対して、何らかのアドレス付けによる番号などにより、目的のデータがある場所がわかっていれば、それを直接アクセスできる、というような方式である。Direct access storage device(DASD)など、「直接アクセス」という語もある。なお「ランダムアクセスメモリ」についてはRandom Access Memoryの記事を参照。 おおまかな説明になるが、例えばファイルシステムに利用しているディスクであれば、目的のファイルのパス文字列からinodeを得て、inodeからブロック番号を得る。ブロック番号は容易にディスクの実際のアドレス(Logical Block Addressing)に変換できるので、あとはディスクコントローラにそのLBAにアクセスするコマンドを投げる。ディスクコントローラにより、ディスクメディアであればヘッドが目的のセクタがあるシリンダに移動され(シーク)、目的のセクタが現れるまでディスクの回転を待ち、最終的に目的のセクタにアクセスが行われる。
ループ展開
ループ展開(ループてんかい、)は、プログラムのサイズを犠牲に実行速度を最適化する(時間と空間のトレードオフ)、と呼ばれる手法の1つである。ループアンローリング()とも呼ぶ。プログラマが手動で行うこともあるし、コンパイラが行うこともある。 ループ展開の目的は、毎回の繰り返しごとに発生する「ループの終了」条件のテストを減少させる(もしくはなくす)事によって、実行速度を向上させることである。ループは、ループ自体を制御するためのオーバーヘッドがなくなるように、独立した命令ブロックの連続に書き換えることができる。
ローマ数字
ローマ数字(ローマすうじ)は、数を表す記号の一種である。ラテン文字の一部を用い、例えばアラビア数字における 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 をそれぞれ I, II, III, IV, V, VI, VII, VIII, IX, X のように表記する。I, V, X, L, C, D,M はそれぞれ 1, 5, 10, 50, 100, 500, 1000 を表す。i, v, x などと小文字で書くこともある。現代の一般的な表記法では、1以上4000未満の数を表すことができる。 ローマ数字のことをギリシャ数字と呼ぶ例が見られるが、これは誤りである。
ブーリアン型
ブーリアン型(ブーリアンがた、Boolean datatype)は、真理値の「真。
ブール関数
ブール関数(ブールかんすう、Boolean function)は、非負整数 k 個のブール領域 B。
プリフェッチ
プリフェッチ (prefetch) とは、コンピュータにおいて、利用が予測されるデータをあらかじめより高速なメモリに読み込んでおき、性能と速度の向上を図る動作である。日本語では事前読込み(じぜんよみこみ)という。 例として以下のようなものがある。
ヒープソート
ヒープソート (heap sort) とはリストの並べ替えを二分ヒープ木を用いて行うソートのアルゴリズムである(ヒープ領域とは無関係であることに注意する)。 アルゴリズムは、以下のように2つの段階から構成される。
テーブルジャンプ
テーブルジャンプは計算機プログラムの制御方式の一つである。テーブルジャンプに使用するテーブルをジャンプテーブルと呼ぶ。 ジャンプ命令を実行する際、ジャンプ先の番地(アドレス)を予め表の形でメモリに記憶させておき、それを参照してジャンプする方式。自己書き換えなどのテクニックと併用して使われる。複数の分岐先がある場合でも、短時間でジャンプが可能となる。 高級言語にもジャンプテーブルによる実装を考慮したものがあった。Pascalのcase文が変数に順序型のみを許容しているのが一例である。 Unix系オペレーティングシステムのダイナミックリンクライブラリは、ロードされるアドレスが固定されていない。このため一種のテーブルジャンプでライブラリ内のサブルーチンにジャンプするようになっている。実行プログラムをロードした当初、そのジャンプテーブルは全てローダー (loader) にジャンプするように設定されている。ローダーはジャンプに使用されたテーブルのエントリに対応するライブラリルーチンにジャンプするのだが、その際にジャンプテーブル自身を書き換えて次回のコールからは直接ライブラリルーチンにジャンプするように変更する。
テイラー展開
数学においてテイラー級数(テイラーきゅうすう、Taylor series)は、関数のある一点での導関数の値から計算される項の無限和として関数を表したものである。そのような級数を得ることをテイラー展開(テイラーてんかい)という。 テイラー級数の概念はスコットランドの数学者ジェームズ・グレゴリーにより定式化され、フォーマルにはイギリスの数学者ブルック・テイラーによって1715年に導入された。0 を中心としたテイラー級数は、マクローリン級数 (Maclaurin series) とも呼ばれる。これはスコットランドの数学者コリン・マクローリンにちなんでおり、彼は18世紀にテイラー級数のこの特別な場合を積極的に活用した。
データ構造
データ構造(データこうぞう、data structure)とは、コンピュータプログラミングでの、データの集まりの形式化された構成である。格納された各データの参照や修正といった管理を容易にするための構成である。一定の関係性を持たせたデータ型のコレクションであり、データ値に適用するための関数や手続きも格納されることがある。データの代数的構造とも言われる。
デジタル回路
デジタル回路(デジタルかいろ、digital circuit - ディジタル回路)は、アナログ回路に対比してデジタル表現された電気信号の論理演算、相互変換、蓄積及び伝達などを行う、離散的な電位範囲など他にも、基準となる交流波に対する位相差、電圧ではなく電流ベースなど、いろいろありうる。を情報の表現に用いる電子回路で、論理回路の実現法のひとつである。信号レベルが公差、減衰、ノイズなどで若干変動したとしても、しきい値具体的に許される範囲は異なる。仕様などでは中間に必ず「定常的な状態として、この範囲にしてはならない」という範囲があることが多い。シュミットトリガなど故意にヒステリシスを大きく取り、直前の状態に引きずられるものとして、これを避けることもある。ただしそれでも、非同期系から同期系へのインタフェースには、必ず、セットアップ時間とホールド時間という、何らかのタイミングの瞬間の前後に変動が許されない期間があるため、完全には、準安定状態の可能性を無視してはいけない(:en:Metastability in electronics)。
ニューラルネットワーク
(人工知能の分野で)ニューラルネットワーク(neural network; NN、神経網)は、生物の学習メカニズムを模倣した機械学習手法として広く知られているものでありCharu C.Aggarwal著『ニューラルネットワークとディープラーニング』(データサイエンス大系シリーズ)、学術図書出版社、2022年。ISBN 978-4780607147, 第一章「ニューラルネットワークとは」「はじめに」、pp.1-2、「ニューロン」と呼ばれる計算ユニットをもち、生物の神経系のメカニズムを模倣しているものである。人間の脳の神経網を模した数理モデル『2020年版 基本情報技術者 標準教科書』オーム社、p.55。模倣対象となった生物のニューラルネットワーク(神経網)とはっきり区別する場合は、人工ニューラルネットワーク (artificial neural network) と呼ばれる。
分割統治法
分割統治法(ぶんかつとうちほう、divide-and-conquer method)は、そのままでは解決できない大きな問題を小さな問題に分割し、その全てを解決することで、最終的に最初の問題全体を解決する、という問題解決の手法である。
アーリヤバタ
アーリヤバタ(IAST: 、476年3月21日 - ?)は、古典期インドの天文学者、数学者。著作に『』(499年)と『アーリヤシッダーンタ』がある。各種の天文常数や円周率などの定数の精密化、を取り入れたインド数学の発展、インドの数理天文学の開拓といった業績がある。
キャラクタ (コンピュータ)
キャラクタ (character) は、文字のことであるが、情報処理においては「文字コード」で表される「文字集合」という集合の要素(「元」)のことである。
キャッシュ (コンピュータシステム)
キャッシュ()は、CPUのバスやネットワーク、データベース、GPU、DSPなどにおいて、情報を転送する際、転送効率を向上するための記憶階層の実現手段である。ハードウェアの形態とソフトウェアの形態がある。 キャッシュ概要図 転送元と転送先の中間に位置し、データ内容の一部とその参照を保持する。 参照が既にキャッシュに格納されているデータが転送要求されたとき、転送元ではなくキャッシュが転送を代行する。これをキャッシュヒットという。所望のデータがキャッシュに存在せず元データから転送する状態をキャッシュミスという。由来は不明で和製英語と思われるが、日本の一部の文献及び資格試験において「キャッシュミスヒット」という用語が使われている。
見る ルックアップテーブルとキャッシュ (コンピュータシステム)
コンパイラ最適化
コンパイラ最適化(コンパイラさいてきか、Compiler optimization)では、コンピュータ・プログラムの最適化に関する話題のうち、もっぱらコンパイラに関係するものに関して説明する。最も一般的な要求はプログラムの実行時間を最小化することであり、その次に使用するメモリ量を最小化することである。また、携帯可能なコンピュータが増えるにつれて、消費電力を最小化するという最適化も生まれてきた。 一部のコード最適化問題はNP完全問題であることが示されている。実際には、プログラマがコンパイラによる最適化の完了を待てる時間の上限なども考慮してコンパイラ最適化を実装する(最適化はCPU時間とメモリを多大に使用する)。かつては、コンピュータのメモリ実装量も実行できる最適化を制限する要因だった。
コンピュータグラフィックス
コンピュータグラフィックス(computer graphics、略称: CG)は、コンピュータを用いて画像を生成する科学技術、及びその技術によって生成される画像のことである。 表現手段としてのCGは、鮮やかな色彩、編集の容易さ、非現実的な映像などを提供することができる。映画、アニメ、テレビコマーシャル、イラストレーション、漫画などの画像・映像コンテンツ制作や、ゲーム、バーチャル・リアリティなどのインタラクティブコンテンツ制作に用いられる一般的な手段として定着している。実写による映像表現においても、CGを合成することによる効果(VFX)を加えることがある。 また医療、建築、プロダクトデザイン、可視化などの分野でもCGは要素技術として用いられている。
コンピュータ断層撮影
コンピュータ断層撮影(コンピュータだんそうさつえい、computed tomography、略称:CT)は、放射線などを利用して物体を走査しコンピュータを用いて処理することで、物体の内部構造を画像として構成する技術、あるいはそれを行うための機器。 「断層撮影」の名前のとおり、本来は物体の(輪切りなどの)断面画像を得る技術であるが、これらの検査技術は単に断面画像として用いられるのみでなく、画像処理技術の向上によって任意断面画像再構成(MPRmulti-planar reconstruction)や曲面を平面に投影する「カーブドMPR」(または カーブド・プレーナー・リコンストラクション)、最大値投影像(MIPmaximum intensity projection)、サーフェスレンダリングやボリュームレンダリングなどの3次元グラフィックスとして表示されることも多くなり、画像診断技術の向上に寄与している。
シーケンシャルアクセス
シーケンシャルアクセスとランダムアクセスの概念図 シーケンシャルアクセス (sequential access) とは、データ構造や記憶装置などにおけるデータへのアクセス方式のひとつであり、コンテナ(コレクション)または記憶媒体の先頭から順に検索しアクセスしていく。そのため、後ろに格納または記録されたデータに辿り着くまで時間がかかる。これは順次アクセスとも言われる。対になる方式はランダムアクセスである。 (かつての)カセットテープやビデオテープなどオーディオやビデオ用としては多用された。 コンピュータの付帯装置においては、利便性の点でランダムアクセスが可能な機器がもっぱらだが、業務用の磁気テープ(LTOなど)はシーケンシャルアクセスである。また、ランダムアクセスはシーク時間による遅延が発生するため、ディスクメディアに対して大容量のバックアップを行う場合などにおいては、シーケンシャルアクセスの方が高速に読み込み・書き込みが可能である。
ジョンズ・ホプキンズ大学
1876年にアメリカで初めてヨーロッパの研究型大学をめざして設立され、現在ではとくに医学・公衆衛生学・国際関係論などの分野でアメリカを代表する名門校のひとつとみなされているHugh Hawkins, Pioneer: A History of the Johns Hopkins University, rev.
スタンフォード大学
スタンフォード大学(スタンフォードだいがく、Stanford University 略称SU)は、カリフォルニア州スタンフォードに本部を置くアメリカ合衆国の私立大学。登記上の正式名称はリーランド・スタンフォード・ジュニア大学(Leland Stanford Junior University)。 1891年に創立され、第二次大戦後の数十年間でとくにリモート・センシング技術や地震観測技術、情報工学・コンピューターサイエンスなどの発展で大きな役割を果たし、アメリカを代表する名門校のひとつに成長した。 現在の大学ランキングでは、タイムズ・ハイヤー・エデュケーションで世界・米国内ともに第2位(2024年)、USニューズ誌で米国内第3位と(2024年)、研究・教育に秀でた総合大学として高い評価を受ける。また学部段階での合格率は 3.68%と、ハーバード大学と並んで全米最難関のグループである。
サンスクリット
Bhujimolという書体を使って書かれており、椰子の葉からできている (貝葉)。 サンスクリット(संस्कृतम् 、Sanskrit日本語の「サンスクリット」という単語は英語由来: )は、古代インド・アーリア語に属する言語。北西方からインドを訪れたとされるアーリア人によって話された古代語。後に文法家パーニニが文法を詳細に研究した。 アーリア人らが定住した北インドを中心に南アジアで用いられ、その影響を受けた東アジア、東南アジアの一部でも使用された。文学、哲学、学術、宗教などの分野で広く用いられ、特に大乗仏教の多くの仏典がこの言語で記され、ヒンドゥー教では現在でも礼拝用言語である。現在では母語話者は少ないが権威は大きく、現代インドでは憲法第8附則で当初から公用語に指定されており、紙幣での金額記載にも含まれる。
再実体化
再実体化(英: Rematerializationあるいは remat)とは、コンパイラ最適化手法の一つで、メモリからロードせずに再計算を行うことで実行時間を節約するものである。典型的にレジスタ割り付けと統合した形で用いられ、レジスタに格納しきれずメモリにデータを書き込んでしまうことを避けるために使用される。再実体化は Preston Briggs、Keith D.
内挿
内挿(ないそう、)や補間(ほかん)とは、ある既知の数値データ列を基にして、そのデータ列の各区間の範囲内を埋める数値を求めること、またはそのような関数を与えること。またその手法を内挿法(interpolation method)や補間法という。対義語は外挿や補外。
入出力
入出力(にゅうしゅつりょく、input/output)は、データなどの「ものごと」の流れにおける出入りのことで、入力と出力の2つを総称した概念のことである。input/outputの頭文字をとってと略されることがある。
C言語
C言語(シーげんご、C programming language)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発した汎用プログラミング言語である。英語圏では「C language」または単に「C」と呼ばれることが多い。日本でも文書や文脈によっては同様に「C」と呼ぶことがある。制御構文などに高水準言語の特徴を持ちながら、ハードウェア寄りの記述も可能な低水準言語の特徴も併せ持つ。基幹系システムや、動作環境の資源制約が厳しい、あるいは実行速度性能が要求されるソフトウェアの開発に用いられることが多い。後発のC++やJava、C#など、「C系」と呼ばれる派生言語の始祖でもある。 ANSI、ISO、またJISにより言語仕様が標準規格化されている。
確率分布
確率分布(かくりつぶんぷ、probability distribution)は、確率変数に対して、各々の値をとる確率全体を表したものである。日本産業規格では、「確率変数がある値となる確率,又はある集合に属する確率を与える関数」と定義している。
線形補間
区分的線形補間の例 区分線形補間の例 2次元の区分線形補間の例 線形補間(せんけいほかん、Linear interpolation, lerp)は、多項式補間の特殊なケースで、線形多項式(一次式)を用いた回帰分析の手法である。1次補間としても知られている。 なお、3つ以上のデータに対し線形補間といった場合、1つの線型近似によるフィッティングではなく、区分線形関数を使った区分線形補間(1次スプライン補間、いわゆる折れ線グラフ)のことである。 線形補間は数学の世界(特に数値解析)やコンピュータグラフィックスを含む多くの分野で非常によく使われている。補間の非常に単純な形式であり、これより単純なのは(0次補間)しかない。
線形探索
線形探索(せんけいたんさく、linear search, sequential search)は、検索のアルゴリズムの一つ。リストや配列に入ったデータに対する検索を行うにあたって、先頭から順に比較を行い、それが見つかれば終了する。 n個のデータからm個のデータを検索する場合、時間計算量は O(nm) 、空間計算量は O(1) である。
真理値表
真理値表(しんりちひょう、Truth table)は、論理関数(真理関数)の、入力の全てのパターンとそれに対する結果の値を、表にしたものである。 例1:命題Pの否定「lnot P」の場合、以下のような真理値表になる。 例2:2つの命題P,Qの論理積「P land Q」の場合、以下のような真理値表になる。 例3:2つの命題P,Qの論理和「P lor Q」の場合、以下のような真理値表になる。 例4:2つの命題P,Qの論理包含「P implies Q」の場合、以下のような真理値表になる。論理包含としてP⇒Qと¬P∨Q、¬P⇒QとP∨Qの真理値が一致していることはしばしば指摘される例である。
統計学
正規分布は非常に一般的な確率密度関数の一つであり、中心極限定理により有用となっている。 Iris flower data setを使用している。 統計学(とうけいがく、statistics)とは、統計に関する研究を行う学問である。経験的に得られたバラツキのあるデータから、応用数学の手法を用いて数値上の性質や規則性あるいは不規則性を見いだす。統計的手法は、実験計画、データの要約や解釈を行う上での根拠を提供するため、幅広い分野で応用されている。 物理学・経済学・社会学・心理学・言語学といった人文科学・社会科学・自然科学(基礎科学)から、工学・医学・薬学といった応用科学まで、実証分析を伴う科学の分野において必須の学問となっている。また、科学哲学における重要なトピックの一つでもある。
画像処理
画像処理(がぞうしょり、image processing)とは、画像を変形したり、色合いを変えたり、別の画像と合成したり、画像から何らかの情報を取り出したりする処理全般を指す。一般的に画像処理と言えば、コンピュータを使用した画像処理、すなわちデジタル画像処理のことを指す。
計算機科学
計算機科学(けいさんきかがく、computer science、コンピューター・サイエンス)またはコンピュータ科学、CSとは、情報と計算の理論的基礎、およびそのコンピュータ上への実装と応用に関する研究分野である。コンピュータサイエンス(computer science)は「情報科学」や「情報工学」とも和訳される。コンピュータ科学には様々な分野がある。コンピュータグラフィックスのように応用に力点がある領域もあれば、理論計算機科学と呼ばれる分野のように数学的な性格が強い分野もある。計算科学は科学技術計算という「計算需要」に応えるための分野であり、それを実現する手段の研究は高性能計算である。また、一見わかりやすい分類として、計算機工学など「ハードウェア」と、プログラミングなど「ソフトウェア」という分類があるが、再構成可能コンピューティングのようにその両方といえる分野があるなど、単純に分類ができるようなものではない。
配列
この記事では、コンピュータ・プログラムにおいて配列(はいれつ、array)と呼ばれているデータ構造およびデータ型について説明する。計算科学方面ではベクトルという場合もある。また、リストも参照。一般に、添え字で個々の要素を区別する。
連続写像
数学において、関数または写像 が、定義域のある点 において連続(れんぞく、continuous)であるとは、 が において極限を保つこと、平たく言えば、 の入力 を に「限りなく近づける」ことで、その近づけ方によらず、出力 をも に「限りなく近づける」ことができるということである。特に定義域の全ての点において連続であるとき、 は連続関数(れんぞくかんすう、continuous function)または連続写像(れんぞくしゃぞう)という。連続でないことは不連続(ふれんぞく、discontinuous)という。 連続性は多項式関数や指数関数といった多くの初等関数が備える性質であり、実数値関数では連結集合の上で中間値の定理、コンパクト集合の上で最大値最小値定理が成り立つほか、微分可能であるための必要条件や積分可能であるための十分条件でもあるなど、解析学的に重要な性質を伴う。
連結リスト
は、最も基本的なデータ構造の1つであり、他のデータ構造の実装に使われる。リンクリスト、リンクトリストとも表記される。 一連のノードが、任意のデータフィールド群を持ち、1つか2つの参照(リンク)により次(および前)のノードを指している。連結リストの主な利点は、リスト上のノードを様々な順番で検索可能な点である。連結リストは自己参照型のデータ型であり、同じデータ型の別のノードへのリンク(またはポインタ)を含んでいる。連結リストは場所が分かっていれば、ノードの挿入や削除を定数時間で行うことができる(場所を探すのにかかる時間はリスト上の順番の条件などにも依存するし、後述する片方向リストなのか双方向リストなのかにも依存する)。連結リストにはいくつかの種類があり、片方向リスト、双方向リスト、線形リスト、循環リストなどがある。
連想配列
連想配列(れんそうはいれつ、associative array。)とは、コンピュータプログラミングにおいて、添え字にスカラー数値以外のデータ型(文字列型等)も使用できる配列である。抽象データ型のひとつ。連想リスト、連想コンテナ、辞書(あるいはカタカナでディクショナリ dictionary)、ハッシュ(hash)、マップ(map)とも呼ばれる。 歴史的には、最初に LISP の連想リストとして広く認知された。その後、SNOBOL で table として、AWK で連想配列として実装したことで、その潜在能力がさらに広く知られるようになった。現在、Rubyなど一部の言語では、添え字にはどのようなデータでも使えるものもある。
FPGA
Altera Stratix IV GX FPGA FPGA(field-programmable gate array)は、製造後に購入者や設計者が構成を設定できる集積回路であり、広義にはPLD(プログラマブルロジックデバイス)の一種である。現場でプログラム可能なゲートアレイであることから、このように呼ばれている。
Java
Java(ジャバ、ジャヴァ)は、汎用プログラミング言語とソフトウェアプラットフォームの双方を指している総称ブランドである。オラクルおよびその関連会社の登録商標である。1996年にサン・マイクロシステムズによって市場リリースされ、2010年に同社がオラクルに吸収合併された事によりJavaの版権もそちらに移行した。 プログラミング言語Javaは、C++に類似の構文、クラスベースのオブジェクト指向、マルチスレッド、ガベージコレクション、コンポーネントベース、分散コンピューティングといった特徴を持ち、平易性重視のプログラム書式による堅牢性と、仮想マシン上での実行によるセキュリティ性およびプラットフォーム非依存性が理念とされている。
Pentium FDIV バグ
Pentium FDIV バグは、インテルのPentiumプロセッサに含まれていた、特定の値の除算の結果が誤ったものになる、というバグである。
Unrolled linked list
Unrolled linked listは連結リストの変種で、各ノードに格納する要素を複数個にしたものである。CPUキャッシュの利用効率を劇的に向上させるとともに、リストのメタデータ(参照など)によるメモリ消費のオーバーヘッドを削減できる。B木とも関連がある。 '''Unrolled linked list'''この例では"maxElements"は"4"である。
見る ルックアップテーブルとUnrolled linked list
機械学習
機械学習(きかいがくしゅう、)とは、経験からの学習により自動で改善するコンピューターアルゴリズムもしくはその研究領域で、人工知能の一種であるとみなされている。 典型的には「訓練データ」もしくは「学習データ」と呼ばれるデータを使って学習し、学習結果を使って何らかのタスクをこなすものとされる。例えば過去のスパムメールを訓練データとして用いて学習し、スパムフィルタリングというタスクをこなす、といったものである。
滑らかな関数
数学において、関数の滑らかさ(なめらかさ、smoothness)は、その関数に対して微分可能性を考えることで測られる。より高い階数の導関数を持つ関数ほど滑らかさの度合いが強いと考えられる。 直観的には、グラフの各点をどんなに拡大しても尖っていないことを意味する。
数表
数表(すうひょう、mathematical table または numerical / numeric table)とは、特定の計算式あるいは関数について独立変数(引数)を様々に変化させた場合の結果として得られる従属変数の数列を示した表である。代表的なものとして、常用対数表や三角関数表、乱数表などがある。
参考情報
コンピューターのパフォーマンス
- BAPCoコンソーシアム
- C10K問題
- CPU時間
- PCKeeper
- Standard Performance Evaluation Corporation
- サイクルあたりの命令実行数
- テーブルジャンプ
- メモ化
- モデルナンバー
- ルックアップテーブル
ソフトウェア最適化
- Flyweight パターン
- Javaの性能
- インライン関数
- コピーオンライト
- ソフトウェアパフォーマンステスト
- トレーシング実行時コンパイル
- メモリー・フットプリント
- メモ化
- ルックアップテーブル
- 参照の局所性
- 性能解析
- 時間と空間のトレードオフ
- 最適化 (情報工学)