アルゴリズム

[Python] アルカンの構造異性体を数えるプログラムの書き方

アルカンの構造異性体を数えるプログラムは、炭素数に応じた異なる構造を生成し、それらを数える必要があります。 アルカンは炭素と水素からなる飽和炭化水素で、一般式は \(C_nH_{2n+2}\) です。 Pythonでこれを実装するには、再帰

続きを読む »
アルゴリズム

[Python] ハッシュ法で要素探索・追加・削除を行うプログラムの作成

ハッシュ法を用いた要素の探索、追加、削除を行うプログラムは、データを効率的に管理するためにハッシュテーブルを使用します。 Pythonでは、組み込みの辞書型dictがハッシュテーブルとして機能します。 要素の追加はdict[key] = v

続きを読む »
アルゴリズム

[Python] プサイ関数とポリガンマ関数のプログラムを作成する方法

Pythonでプサイ関数(ディガンマ関数)やポリガンマ関数を計算するには、scipyライブラリのspecialモジュールを使用します。 プサイ関数はscipy.special.digamma()、ポリガンマ関数はscipy.special.

続きを読む »
アルゴリズム

[Python] 安定結婚問題を計算するプログラムを制作する

安定結婚問題(Stable Marriage Problem)は、男女それぞれが好みの順位を持ち、全員がペアになるようにマッチングを行う問題です。 安定なマッチングとは、どのペアも他のペアと比べて不満がない状態を指します。 この問題を解くた

続きを読む »
アルゴリズム

[Python] 遺伝的アルゴリズムを実装する方法

遺伝的アルゴリズム(GA)は、進化の過程を模倣して最適化問題を解く手法です。 PythonでGAを実装するには、まず個体(解候補)を表現するための遺伝子(通常はリストやビット列)を定義します。 次に、初期集団をランダムに生成し、各個体の適応

続きを読む »
アルゴリズム

[Python] フィボナッチ探索を実装する方法

フィボナッチ探索は、フィボナッチ数列を利用して配列内の要素を効率的に探索するアルゴリズムです。 バイナリサーチに似ていますが、分割の比率が黄金比に基づいている点が特徴です。 Pythonで実装する際は、まずフィボナッチ数列を生成し、探索範囲

続きを読む »
アルゴリズム

[Python] チェックサムを生成・チェックする(MD5/SHA-1/SHA-256)

Pythonでは、標準ライブラリのhashlibモジュールを使用して、MD5、SHA-1、SHA-256などのチェックサムを生成および検証できます。 まず、hashlibをインポートし、hashlib.md5()、hashlib.sha1(

続きを読む »
アルゴリズム

[Python] たらいまわし関数の実装方法

たらいまわし関数(別名:アッカーマン関数の簡易版)は、再帰的な関数の一種で、特定の条件に基づいて再帰的に呼び出される関数です。 Pythonでの実装は、基本的に以下のような形式で行います。 関数は3つの引数 \(x\), \(y\), \(

続きを読む »
アルゴリズム

[Python] ドラゴン曲線を計算してmatplotlibで描画する方法

ドラゴン曲線は、自己相似性を持つフラクタル曲線の一種です。 Pythonでドラゴン曲線を描画するには、まず再帰的なアルゴリズムを使用して曲線の座標を計算し、その後、matplotlibを使って描画します。 基本的な手順としては、初期の直線を

続きを読む »
アルゴリズム

[Python] はさみうち法で未知数1の方程式を解く方法

はさみうち法(または二分法)は、連続関数の根を求めるための数値解析手法です。 Pythonでは、まず関数 \( f(x) \) が与えられた区間 \([a, b]\) で \( f(a) \) と \( f(b) \) の符号が異なることを

続きを読む »
アルゴリズム

[Python] ダグラスポーカーアルゴリズムの実装方法

ダグラスポーカーアルゴリズム(Douglas-Peucker Algorithm)は、線分の近似を行うアルゴリズムで、与えられた点群から重要な点を残し、不要な点を削除して曲線を簡略化します。 Pythonでの実装は、再帰的に処理を行うことが

続きを読む »
アルゴリズム

[Python] カオスアトラクタのアルゴリズムを実装する方法

カオスアトラクタのアルゴリズムをPythonで実装するには、まず代表的なカオスシステム(例:ローレンツ方程式やヘンオン写像)を選び、その微分方程式や再帰関数を数値的に解く必要があります。 ローレンツ方程式の場合、3つの変数(\(x\), \

続きを読む »
アルゴリズム

[Python] スターリング数の計算方法

スターリング数は、集合を部分集合に分割する方法の数を表す組合せ数学の概念です。 スターリング数には2種類あり、スターリング数の第一種は巡回置換の数、第二種は集合を非空部分集合に分割する方法の数を表します。 Pythonでスターリング数を計算

続きを読む »
アルゴリズム

[Python] スプライン補間を実装する方法

スプライン補間は、与えられたデータ点を滑らかに結ぶための手法です。 Pythonでは、scipy.interpolateモジュールを使用して簡単にスプライン補間を実装できます。 具体的には、CubicSplineやUnivariateSpl

続きを読む »
アルゴリズム

[Python] バイナリにおけるエンディアン変換を行う方法

Pythonでバイナリデータのエンディアン変換を行うには、主にstructモジュールを使用します。 struct.pack()やstruct.unpack()を使って、バイトオーダー(エンディアン)を指定できます。 フォーマット文字列の先頭

続きを読む »
アルゴリズム

[Python] パスカルの三角形を表示する方法

Pythonでパスカルの三角形を表示するには、二重ループを使用して各行の要素を計算します。 パスカルの三角形の各要素は、前の行の2つの要素の和で表されます。 最初と最後の要素は常に1です。 具体的には、math.factorialを使って組

続きを読む »
アルゴリズム

[Python] エジプト式分数を計算する方法

エジプト式分数とは、すべての分数を異なる単位分数(分子が1の分数)の和として表す方法です。 Pythonでエジプト式分数を計算するには、貪欲法を用いるのが一般的です。 具体的には、与えられた分数の分母を超えない最大の単位分数を見つけ、その単

続きを読む »
アルゴリズム

[Python] ヨセフスの問題をプログラムで解く方法

ヨセフスの問題は、円形に並んだ人々が一定の規則で順番に排除され、最後に残る人を求める問題です。 Pythonで解くには、再帰的なアプローチやループを使ったシミュレーションが一般的です。 再帰的な解法では、基本的な再帰関数を用いて、\(f(n

続きを読む »
アルゴリズム

[Python] プログラムの計算量で用いられるO記法について解説

O記法(ビッグオー記法)は、アルゴリズムの計算量を表すために使用される記法です。 主に入力サイズが大きくなったときのアルゴリズムの実行時間やメモリ使用量の増加を評価します。 O記法は最悪の場合の時間や空間の増加率を示し、定数や低次の項は無視

続きを読む »
Back to top button