神經網路
人工神經網路(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: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
三個坑點。
1:只輸出輸出層, 所以只輸出出度為0的點
2:興奮值可能為負數
3:乙個點的時候這個點即使輸入層也是輸出層。
#include #include#include
#define f(i, l, r) for(int i = l; i <= r; ++i)
#define d(i, l, r) for(int i = l; i >= r; --i)
using
namespace
std;
const
int inf = 1000000
;const
int max = 101
;int
n, p;
intd[max], u[max], indegree[max], g[max][max], cindegree[max], uindegree[max], outdegree[max];
bool
r[max], b;
void
output()
if(n == 1 && d[1] > 0
)
if(!b)
cout
<< "
null";
}void
toposort() }}
}f(l,
1, n) }}
}void
input()
f(i,
1, n)
if(indegree[i] == 0
) r[i] = 1;}
intmain()
NOIP2003神經網路 BFS
人工神經網路 artificial neural network 是一種新興的具有自我學習能力的計算系統,在模式識別 函式逼近及貸款風險評估等諸多領域有廣泛的應用。對神經網路的研究一直是當今的熱門方向,蘭蘭同學在自學了一本神經網路的入門書籍後,提出了乙個簡化模型,他希望你能幫助他用程式檢驗這個神經網...
NOIP2003提高組 神經網路
題目 洛谷p1038 vijos p1105 codevs1088。題目大意 給你乙個有向圖,每個非源點i的值的計算方式為 c i sum limits w c j u i 求每個匯點 沒有出邊的點 的值c。解題思路 首先一遍dfs找出所有匯點,然後bfs計算即可。注意源點不需要減去u。c code...
NOIP提高組2003 神經網路
題目 題目背景 人工神經網路 artificial neural network 是一種新興的具有自我學習能力的計算系統,在模式識別 函式逼近及貸款風險評估等諸多領域有廣泛的應用。對神經網路的研究一直是當今的熱門方向,蘭蘭同學在自學了一本神經網路的入門書籍後,提出了乙個簡化模型,他希望你能幫助他用程...