P1038 神經網路

2022-05-13 13:09:52 字數 2465 閱讀 2041

人工神經網路(artificial neural network)是一種新興的具有自我學習能力的計算系統,在模式識別、函式逼近及貸款風險評估等諸多領域有廣泛的應用。對神經網路的研究一直是當今的熱門方向,蘭蘭同學在自學了一本神經網路的入門書籍後,提出了乙個簡化模型,他希望你能幫助他用程式檢驗這個神經網路模型的實用性。

在蘭蘭的模型中,神經網路就是一張有向圖,圖中的節點稱為神經元,而且兩個神經元之間至多有一條邊相連,下圖是乙個神經元的例子:

神經元〔編號為1)

圖中,x1―x3是資訊輸入渠道,y1-y2是資訊輸出渠道,c1表示神經元目前的狀態,ui是閾值,可視為神經元的乙個內在引數。

神經元按一定的順序排列,構成整個神經網路。在蘭蘭的模型之中,神經網路中的神經無分為幾層;稱為輸入層、輸出層,和若干個中間層。每層神經元只向下一層的神經元輸出資訊,只從上一層神經元接受資訊。下圖是乙個簡單的三層神經網路的例子。

蘭蘭規定,ci服從公式:(其中n是網路中所有神經元的數目)

公式中的wji(可能為負值)表示連線j號神經元和 i號神經元的邊的權值。當 ci大於0時,該神經元處於興奮狀態,否則就處於平靜狀態。當神經元處於興奮狀態時,下一秒它會向其他神經元傳送訊號,訊號的強度為ci。

如此.在輸入層神經元被激發之後,整個網路系統就在資訊傳輸的推動下進行運作。現在,給定乙個神經網路,及當前輸入層神經元的狀態(ci),要求你的程式運算出最後網路輸出層的狀態。

輸入格式:

輸入檔案第一行是兩個整數n(1≤n≤100)和p。接下來n行,每行兩個整數,第i+1行是神經元i最初狀態和其閾值(ui),非輸入層的神經元開始時狀態必然為0。再下面p行,每行由兩個整數i,j及乙個整數wij,表示連線神經元i、j的邊權值為wij。

輸出格式:

輸出檔案包含若干行,每行有兩個整數,分別對應乙個神經元的編號,及其最後的狀態,兩個整數間以空格分隔。僅輸出最後狀態大於零的輸出層神經元狀態,並且按照編號由小到大順序輸出!

若輸出層的神經元最後狀態均為 0,則輸出 null。

輸入樣例#1:

5 6

1 01 0

0 10 1

0 11 3 1

1 4 1

1 5 1

2 3 1

2 4 1

2 5 1

輸出樣例#1:

3 1

4 15 1

這道題的難度一般,但是測試資料我給打滿分!!真的是什麼坑資料都有

先簡單說一下這道題的思路

讀入之後拓撲排序,在排序的過程中按照他給的公式進行計算

說一下這道題的坑點:

1.最後輸出結果的時候只有》0的才輸出

2.入度為0的點不需要減閾值(會導致第五個測試點wa)

3.閾值最好一開始就減去

4.可以通過記錄出度來判斷輸出區

1 #include2 #include3 #include4 #include5 #include6 #include7

using

namespace

std;

8void read(int &n)917

while(c>='

0'&&c<='9'

)18 x=x*10+(c-48),c=getchar();

19 flag==1?n=-x:n=x;20}

21const

int maxn=201;22

struct

node

23edge[maxn*40

];26

inthead[maxn];

27int num=1;28

intnow[maxn],yu[maxn],rudu[maxn],vis[maxn],chudu[maxn];

29int

n,m;

30void add_edge(int x,int y,int

z)31

38void

topsort()

3948

49while(q.size()!=0)50

61if(now[edge[i].u]>0

)62 now[edge[i].v]+=edge[i].w*now[edge[i].u];63}

64}65for(int i=1;i<=n;i++)

6676

}77 exit(0

);78}79

}80 printf("

null");

81}82int

main()

8393

for(int i=1;i<=m;i++)

94101

topsort();

102return0;

103 }

P1038 神經網路

n 一張神經網路可以看做乙個dag dagda g,它由三種層組成 輸入層,傳輸層,輸出層 輸入層 初始c i 0c i 0 ci 0的層 輸出層 沒有出邊的層 傳輸層 輸入層和輸出層相對於整張圖的補層 規定傳輸時要減去閾值u iu i ui 求輸出層經過傳輸後仍然滿足c i 0c i 0 ci 0...

P1038 神經網路

直接用拓撲排序,套用題目給的公式就行了。include include include include include include include include include include include include include using namespace std define...

P1038 神經網路

人工神經網路 artificial neural network 是一種新興的具有自我學習能力的計算系統,在模式識別 函式逼近及貸款風險評估等諸多領域有廣泛的應用。對神經網路的研究一直是當今的熱門方向,蘭蘭同學在自學了一本神經網路的入門書籍後,提出了乙個簡化模型,他希望你能幫助他用程式檢驗這個神經網...