3076 神經網路 bfs和拓撲排序

2022-07-01 15:27:10 字數 4571 閱讀 1369

時間限制: 1 sec  記憶體限制: 125 mb

提交: 7  解決: 5

[提交][狀態][討論版][命題人:外部匯入][edit] [testdata] [同步資料]

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

在蘭蘭的模型中,神經網路就是一張有向圖,圖中的節點稱為神經元,而且兩個神經

元之間至多有一條邊相連,下圖是乙個神經元的例子:

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

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

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

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

如此,在輸入層神經元被激發之後,整個網路系統就在資訊傳輸的推動下進行運作。

現在,給定乙個神經網路,及當前輸入層神經元的狀態(ci),要求你的程式運算出最後網路輸出層的狀態。

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

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

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

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

3 1

4 15 1

思路:按照神經的網路傳播進行模擬,一層一層,層序遍歷,

#include#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

struct

node;

struct point;

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.x]>0

)

} }}

//找沒有出度的點,輸出它的值即可

bool f = 0;//

是不是沒有輸出

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

if(!f)

//for(int i=6;i<=7;i++)

return0;

}

提高組-2023年noip

[提交][狀態][edit] [testdata]

posted on 2019-04-19 10:25

收藏時間限制: 1 sec  記憶體限制: 125 mb

提交: 7  解決: 5

[提交][狀態][討論版][命題人:外部匯入][edit] [testdata] [同步資料]

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

在蘭蘭的模型中,神經網路就是一張有向圖,圖中的節點稱為神經元,而且兩個神經

元之間至多有一條邊相連,下圖是乙個神經元的例子:

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

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

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

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

如此,在輸入層神經元被激發之後,整個網路系統就在資訊傳輸的推動下進行運作。

現在,給定乙個神經網路,及當前輸入層神經元的狀態(ci),要求你的程式運算出最後網路輸出層的狀態。

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

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

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

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

3 1

4 15 1

思路:按照神經的網路傳播進行模擬,一層一層,層序遍歷,

#include#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

struct

node;

struct point;

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.x]>0

)

} }}

//找沒有出度的點,輸出它的值即可

bool f = 0;//

是不是沒有輸出

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

if(!f)

//for(int i=6;i<=7;i++)

return0;

}

提高組-2023年noip

[提交][狀態][edit] [testdata]

3076 神經網路 bfs和拓撲排序

時間限制 1 sec 記憶體限制 125 mb 提交 7 解決 5 提交 狀態 討論版 命題人 外部匯入 edit testdata 同步資料 人工神經網路 artificial neural network 是一種新興的具有自我學習能力的計算系統,在模式識別 函式逼近及貸款風險評估等諸多領域有廣泛...

神經網路 拓撲排序

原題 神經網路 時間限制 1 sec 記憶體限制 256 mb 人工神經網路 artificial neural network 是一種新興的具有自我學習能力的計算系統,在模式識別 函式逼近及貸款風險評估等諸多領域有廣泛的應用。對神經網路的研究一直是當今的熱門方向,蘭蘭同學在自學了一本神經網路的入門...

洛谷P1038 神經網路(bfs,模擬,拓撲)

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