人工神經網路(artificial neural networkartificialneuralnetwork)是一種新興的具有自我學習能力的計算系統,在模式識別、函式逼近及貸款風險評估等諸多領域有廣泛的應用。對神經網路的研究一直是當今的熱門方向,蘭蘭同學在自學了一本神經網路的入門書籍後,提出了乙個簡化模型,他希望你能幫助他用程式檢驗這個神經網路模型的實用性。
在蘭蘭的模型中,神經網路就是一張有向圖,圖中的節點稱為神經元,而且兩個神經元之間至多有一條邊相連,下圖是乙個神經元的例子:
神經元〔編號為11)
圖中,x_1-x_3x1−x3是資訊輸入渠道,y_1-y_2y1−y2是資訊輸出渠道,c_1c1表示神經元目前的狀態,u_iui是閾值,可視為神經元的乙個內在引數。
神經元按一定的順序排列,構成整個神經網路。在蘭蘭的模型之中,神經網路中的神經元分為幾層;稱為輸入層、輸出層,和若干個中間層。每層神經元只向下一層的神經元輸出資訊,只從上一層神經元接受資訊。下圖是乙個簡單的三層神經網路的例子。
蘭蘭規定,c_ici服從公式:(其中nn是網路中所有神經元的數目)
c_i=\sum_ w_c_-uci=∑j,i∈ewjicj−ui
公式中的w_wji(可能為負值)表示連線jj號神經元和ii號神經元的邊的權值。當 c_ici大於00時,該神經元處於興奮狀態,否則就處於平靜狀態。當神經元處於興奮狀態時,下一秒它會向其他神經元傳送訊號,訊號的強度為c_ici。
如此.在輸入層神經元被激發之後,整個網路系統就在資訊傳輸的推動下進行運作。現在,給定乙個神經網路,及當前輸入層神經元的狀態(c_ici),要求你的程式運算出最後網路輸出層的狀態。
輸入格式:
輸入檔案第一行是兩個整數n(1 \le n \le 100)n(1≤n≤100)和pp。接下來nn行,每行22個整數,第i+1i+1行是神經元ii最初狀態和其閾值(u_iui),非輸入層的神經元開始時狀態必然為00。再下面pp行,每行由22個整數i,ji,j及11個整數w_wij,表示連線神經元i,ji,j的邊權值為w_wij。
輸出格式:
輸出檔案包含若干行,每行有22個整數,分別對應乙個神經元的編號,及其最後的狀態,22個整數間以空格分隔。僅輸出最後狀態大於00的輸出層神經元狀態,並且按照編號由小到大順序輸出。
若輸出層的神經元最後狀態均為 00,則輸出 「null」。
輸入樣例#1: 複製
5 6輸出樣例#1: 複製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
3 1題目型別:4 15 1
模擬,bfs,拓撲排序
思路:這道題主要模擬神經網路的傳播,依次更新每一層的結點,類似於bfs。首先將通過vector陣列v[i]記錄第i個結點相連的後一層結點。然後先將第一層的點放入佇列,之後每次從佇列中取出乙個點,更新與這個點相連的後一層的所有結點的c。由於點更新完成後要減去u,那麼如何判斷某個點將不再被更新了呢?這就需要用到拓撲排序的知識。初始時要記錄每乙個點的入度,用上一層的i結點更新下一次的j結點以後,j結點的入度就減1,但j結點的入度為0是,即代表j結點將不再會被更新,於是就可以減去u。一直更新佇列,按層遍歷完整個網路以後,最後一層的狀態就隨之得到了。
#include#define ll long longusing
namespace
std;
struct
node;
vector
vi[500];//
存i點與哪些點相連
queuefir;
int ci[500
];int ui[500
];bool inq[500];//
標記在不在佇列裡
intin[500];//
記錄入度
intmain()
}for(int i=1;i<=m;i++)//
輸入結點與結點相連的資訊
//fir佇列裡存放當前這一層,一層層遍歷
//相當於來個bfs
while(!fir.empty())
if(ci[p]>0)//
如果p.x這個點被啟用了,那麼就可以根據題目要求更新to的ci了
} }}
//找沒有出度的點,輸出它的值即可
bool f = 0;//
是不是沒有輸出
for(int i=1;i<=n;i++)}}
if(!f)
return0;
}
洛谷P1038 神經網路
題目 拓撲排序,難度挺低,但是細節很多。其中乙個注意點 c i 即便是負數,也要進隊,不然有些點入度始終大於0,更新不了 include using namespace std struct kka 103 struct nodee 10003 int n,m,i,j,x,y,z,num,out 1...
洛谷 P1038 神經網路
洛谷 p1038 神經網路 人工神經網路 artificial neural network 是一種新興的具有自我學習能力的計算系統,在模式識別 函式逼近及貸款風險評估等諸多領域有廣泛的應用。對神經網路的研究一直是當今的熱門方向,蘭蘭同學在自學了一本神經網路的入門書籍後,提出了乙個簡化模型,他希望你...
洛谷 P1038 神經網路
人工神經網路 artificial neural networkartificialneuralnetwork 是一種新興的具有自我學習能力的計算系統,在模式識別 函式逼近及貸款風險評估等諸多領域有廣泛的應用。對神經網路的研究一直是當今的熱門方向,蘭蘭同學在自學了一本神經網路的入門書籍後,提出了乙個...