Python についての説明

リンク先のテキストファイルのコードはutf-8です。

字化けの場合は文字化けに対応するためのエンコード設定で設定してください。

インストール

統合環境での実行

簡単な文法
乱数の利用

簡単な作図

有限グラフの表示
まずはnetworkxのインストール
% pip install networkx
  • 有限グラフの基本
    import networkx as nx
    G = nx.Graph() # Graphオブジェクトの作成
    G.add_node('1'); G.add_node('2'); G.add_node('3') # 頂点の定義
    G.add_edge('1', '2');G.add_edge('1', '3');G.add_edge('2', '3') # 辺の定義
    nx.draw(G, with_labels = True) # グラフノ表示
    

  • ランダム木の表示(一様)

    import matplotlib.pyplot as plt #図の出力
    import networkx as nx # グラフ(ネットワーク)描画のため
    import random # 乱数使用のため
    
    G = nx.Graph()#Graphオブジェクトの作成
    N=20 ###########頂点のサイズ
    G.add_edges_from([(1,2)])
    for i in range(3,N+1,1): 
        #dice = random.randint(1,i-1) #1からi-1まで一様乱数
        weight_list=[1]*(i-1)########## 重みを変更する!
        dice = random.choices(range(1,i), #1からi-1まで一様乱数
                             weights=weight_list)[0]    
        G.add_edges_from([(i,dice)]) #iとdice -1を結ぶ
    ##############Gを描く。頂点、辺の色、大きさを調整可能
    nx.draw(G, with_labels = True, node_color = "pink", 
            edge_color = "gray", node_size = 300, width = 2)
    # Nが大きい場合
    #nx.draw(G, with_labels = False, node_color = "red", 
    #        edge_color = "gray", node_size = 20, width = 2)
    plt.show()
    
  • ランダム木の表示(重みつき)

    import matplotlib.pyplot as plt #図の出力
    import networkx as nx # グラフ(ネットワーク)描画のため
    import random # 乱数使用のため
    import math # 指数関数の使用のため
    
    G = nx.Graph()#Graphオブジェクトの作成
    N=100 ###########頂点のサイズ
    G.add_edges_from([(1,2)])
    weight_list=[1]
    for i in range(3,N+1,1): 
        j=i-1
        ####### 重みを変更する!
        #weight_list.append(1)#一様乱数
        #weight_list.append(math.exp(-j))#指数
        weight_list.append((1/2.0)**j)#指数関数
        #weight_list.append((2.0)**j)#指数関数
        #weight_list.append(j)# 多項式
        #weight_list.append(j*j)# 1,2^2,...,N^2
        ###
        #print('list:', weight_list)
        dice = random.choices(range(1,i), #1からi-1まで一様乱数
                             weights=weight_list)[0]    
        G.add_edges_from([(i,dice)]) #iとdice -1を結ぶ
    
    ########
    ## ルートだけ違う色にする
    nodecolor = ['red']
    for i in range(2,N+1,1):
        nodecolor.append('pink')
    ##
    nsize = 3000/N # 頂点の大きさ
    rootsize = nsize*2 # 根の頂点の大きさ
    edge_width = 1
    ## ルートだけ違う大きさにする
    nodesize = [rootsize]
    for i in range(2,N+1,1):
        nodesize.append(nsize)
    ##############Gを描く。頂点、辺の色、大きさを調整可能
    nx.draw(G, with_labels = False, node_color = nodecolor, #node_shape='v',
            edge_color = "gray", node_size = nodesize, width = edge_width)
    
    # Nが大きい場合
    #nx.draw(G, with_labels = False, node_color = "red", 
    #        edge_color = "gray", node_size = 20, width = 2)
    plt.show()
    
    ランダムウォーク
  • 一様分布により大数の法則