拓扑排序练习

图形学常见概念小结 前言:本文记录《unity shader入门精要》和openGL相关学习过程中一些学习要点; 文章目录PBR流程渲染管线细分着色器的底层实现,应用原理常见的色调映射算法openGl和Direct X的区别PBR流程和URP渲染管线Camera loop(剔除)MVP矩阵变换光线追踪前向渲染和延迟渲染shader和材质的区别bloom原理后处理的理解高斯模糊实现原理图像处理中的边缘检测算子 PBR流程 小结:一套基于自然界微平面理论、能量守恒、菲涅尔反射、线性空间等的科学理论所实现的基于物理的渲染系统,包含一 阅读详情

什么是拓扑排序?拓扑排序的原理及实现

拓扑排序有什么作用呢?我们在上各种课程的时候,有的课程必须在别的课程学完之后才能学习这门课程,如果课程比较少,你能飞得清楚上课的先后顺序,那么如果课程非常多,你不能直接就看出来这些课怎么上,那么怎么办,当然是用拓扑排序了,拓扑排序就能解决这个问题。但是拓扑排序的结果不唯一。

思想:

(1)从有向图中选取一个没有前驱的顶点,并输出之;

(2)从有向图中删去此顶点以及所有以它为尾的弧;

重复上述两步,直至图空,或者图不空但找不到无前驱的顶点为止。没有前驱 – 入度为零,删除顶点及以它为尾的弧– 弧头顶点的入度减1。

例题 A: 

 题目:Genealogical tree

代码:

/*Genealogical tree POJ - 2367 */
#include<string.h>
#include<stdio.h>
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
#define maxn 105
queue<int>q;
vector<int>v[maxn], re;
int degree[maxn];
void TopSort(int n){
     for(int i = 1; i <= n; i++){
        if(degree[i] == 0)q.push(i);
     }
     re.clear();
     while(!q.empty()){
        int t = q.front();
        q.pop();
        re.push_back(t);
        for(int i = 0; i < v[t].size(); i++){
            degree[v[t][i]]--;
            if(!degree[v[t][i]])q.push(v[t][i]);
        }
     }
     int k = re.size();
     for(int i = 0; i < k; i++){
        if(i != 0)cout<<" ";
        cout<<re[i];
     }
     cout<<endl;
}
int main(){
    int n, m, k;
    cin>>n;
    memset(degree, 0, sizeof(degree));
    for(int i  = 0; i <= n; i++)v[i].clear();
    for(int i = 1; i <= n; i++){
        while(scanf("%d", &k) && k != 0){
            degree[k]++;
            v[i].push_back(k);
        }
    }
    TopSort(n);

return 0;
}

例题B:

题目:Ordering Tasks

代码:

/*Ordering Tasks UVA - 10305 */
#include<string.h>
#include<stdio.h>
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
#define maxn 105
queue<int>q;
vector<int>v[maxn], re;
int degree[maxn];
void TopSort(int n)
{
    for(int i = 1; i <= n; i++)
    {
        if(degree[i] == 0)q.push(i);
    }
    re.clear();
    while(!q.empty())
    {
        int t = q.front();
        q.pop();
        re.push_back(t);
        for(int i = 0; i < v[t].size(); i++)
        {
            degree[v[t][i]]--;
            if(!degree[v[t][i]])q.push(v[t][i]);
        }
    }
    int k = re.size();//判断是否存在回路
    for(int i = 0; i < k; i++)
    {
        if(i != 0)cout<<" ";
        cout<<re[i];
    }
    cout<<endl;
}
int  main()
{
    int n, m;
    int  max = 0;
    while(cin>>n>>m && (m ||n))
    {
        for(int i = 1; i <= n; i++)v[i].clear();
        memset(degree, 0, sizeof(degree));
        for(int i = 1; i <= m; i++)
        {
            int a, b;
            cin>>a>>b;
            degree[b]++;
            v[a].push_back(b);
        }
        TopSort(n);
    }
    return 0;
}

 例题C:

题目:产生冠军

思想:找到入度为0的点是否为1.

代码:

/*产生冠军 HDU - 2094 */
#include<string.h>
#include<stdio.h>
#include<iostream>
#include<vector>
#include<queue>
#include<map>
using namespace std;
#define maxn 1005
vector<int>v[maxn], re;
int degree[maxn];

void TopSort(int n)
{
    int cn = 0;
    for(int i = 1; i <= n; i++)
    {
        if(degree[i] == 0)cn++;
    }
    if(cn ==  1)cout<<"Yes"<<endl;
    else cout<<"No"<<endl;

}
int main()
{
    int n;
    string a, b;
    while(scanf("%d", &n) && n != 0)
    {
        int cn = 0;
        memset(degree, 0, sizeof(degree));
        map<string, int>ma;
        for(int i = 1; i <= n; i++)
        {
            cin>>a>>b;
            if(!ma[a])
            {
                cn++;
                ma[a] = cn;
            }
            if(!ma[b])
            {
                cn++;
                ma[b] = cn;
            }
            //cout<<ma[a]<<" "<<ma[b]<<endl;
            degree[ma[b]]++;
        }
        TopSort(cn);
    }
    return 0;
}

例题D:

题目:Legal or Not

代码:

/*Legal or Not HDU - 3342 */
#include<string.h>
#include<stdio.h>
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
#define maxn 105
queue<int>q;
vector<int>v[maxn], re;
int degree[maxn];
void TopSort(int n){
     for(int i = 0; i < n; i++){
        if(degree[i] == 0)q.push(i);
     }
     re.clear();
     while(!q.empty()){
        int t = q.front();
        q.pop();
        re.push_back(t);
        for(int i = 0; i < v[t].size(); i++){
            degree[v[t][i]]--;
            if(!degree[v[t][i]])q.push(v[t][i]);
        }
     }
     int k = re.size();
     if(k == n)cout<<"YES"<<endl;
     else cout<<"NO"<<endl;
}
int main(){
    int n, m;
    while(cin>>n>>m && m && n){
        for(int i = 0; i <= n; i++)v[i].clear();
        memset(degree, 0, sizeof(degree));
        for(int i = 1; i <= m;i++){
            int a, b;
            cin>>a>>b;
            degree[b]++;
            v[a].push_back(b);
        }
        TopSort(n);
    }
return 0;
}

 例题E:

题目:确定比赛名次

代码:

#include<bits/stdc++.h>
using namespace std;
vector<int>v[505];
priority_queue<int, vector<int>, greater<int> >q;
int degree[505];
void Topsort(int n)
{
    for(int i = 1;  i<= n; i++)
    {
        if(degree[i] == 0)q.push(i);
    }
    int cn = 0;
    while(!q.empty())
    {
        int val = q.top();
        q.pop();
        if(cn != 0)cout<<" ";
        cout<<val;
        cn++;
        for(int i = 0; i < v[val].size(); i++)
        {
            int k = v[val][i];
            degree[k]--;
            if(degree[k] == 0)q.push(k);
        }
    }
    cout<<endl;
}
int main()
{
    int n, m, a, b;
    while(cin>>n>>m)
    {
        memset(degree, 0, sizeof(degree));
        for(int i = 1; i <= n; i++)v[i].clear();
        for(int i = 1; i <= m; i++)
        {
            cin>>a>>b;
            v[a].push_back(b);
            degree[b]++;
        }
        Topsort(n);
    }
    return 0;
}

 例题F:

题目:Labeling Balls

题解:http://www.cppblog.com/Davidlrzh/articles/115620.html

代码:

/*Labeling Balls POJ - 3687 */
#include<iostream>
#include<queue>
#include<stdio.h>
#include<string.h>
using namespace std;

#define maxn 210//本题的结果是球不动试出,按照球的顺序输出球排第几
priority_queue<int>q;
vector<int>v[maxn], re;
int degree[maxn],w[maxn];
void TopSort(int n){
     for(int i = 1; i <= n; i++){
        if(degree[i] == 0)q.push(i);
     }
     int cn = 0;
     re.clear();
     while(!q.empty()){
        int t = q.top();
        q.pop();
        cn++;
        re.push_back(t);
        for(int i = 0; i < v[t].size(); i++){
            degree[v[t][i]]--;
            if(degree[v[t][i]] == 0)q.push(v[t][i]);
        }
     }
     if(cn < n)cout<<-1<<endl;
     else {
        int k = re.size();
        for(int i = k-1; i >= 0; i--){
          w[re[i]] = k-i;
        }
        for(int i = 1; i <= k; i++){
            if(i != 1)cout<<" ";
            cout<<w[i];
        }
        cout<<endl;
     }

}
int main(){
    int T;
    cin>>T;
    while(T--){
        int n, m, a, b;
        memset(degree, 0, sizeof(degree));
        cin>>n>>m;
        for(int i  = 0; i <= n; i++){
            v[i].clear();
        }
        while(m--){
            cin>>a>>b;
            v[b].push_back(a);
            degree[a]++;
        }
        TopSort(n);
    }
return 0;
}

例题G:

题目:Reward

思路:本题一开始的时候我正向建图,在同一次循环下找到的入度为0的节点,是同一个级别的,记录一下他是属于第个级别,后来发现这么做会导致所有的数据都会往前倾,例如当a是一个孤立的起点的时候,这么做会把它当做一等节点,后来回顾上面的那道题,发现其实这道题也可以逆向建图,会使所有整个图向右倾斜,达到我们的要求

代码:

/*Genealogical tree POJ - 2367 */
#include<string.h>
#include<stdio.h>
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
#define maxn 10005
struct Node
{
    int rate, id;//rate代表等级
} tmp;
queue<Node>q;
vector<Node>re;
vector<int>v[maxn];
int degree[maxn];
void TopSort(int n)
{
    for(int i = 1; i <= n; i++)
    {
        if(degree[i] == 0)
        {
            tmp.id = i;
            tmp.rate = 0;
            q.push(tmp);
        }
    }
    re.clear();
    int flag = 0;
    while(!q.empty())
    {
        tmp = q.front();
        re.push_back(tmp);
        q.pop();
        int t = tmp.id;
        int x = tmp.rate;
        //cout<<"x"<<x<<" "<<t<<endl;
        for(int i = 0; i < v[t].size(); i++)
        {
            degree[v[t][i]]--;
            if(!degree[v[t][i]])
            {
                tmp.id = v[t][i];
                tmp.rate = x+1;
                q.push(tmp);
            }
        }
    }
    long long sum = n*888;
    if(re.size() == n)
    {
        for(int i = 0; i < re.size(); i++)
        {
            //cout<<re[i].rate<<endl;
            sum += re[i].rate;
        }
        cout<<sum<<endl;
    }
    else cout<<-1<<endl;

}
int main()
{
    int n, m, k;
    while(~scanf("%d %d", &n, &m))
    {
        memset(degree, 0, sizeof(degree));
        for(int i  = 0; i <= n; i++)v[i].clear();
        for(int i = 1; i <= m; i++)
        {
            int a, b;
            cin>>a>>b;
            degree[a]++;
            v[b].push_back(a);

        }
        TopSort(n);
    }

    return 0;
}

 

mapbox高阶,加载倾斜摄影 本文详细介绍如何基于mapbox-gl v3.8.0版本实现倾斜摄影的加载,亲测可用。希望能帮助到您。一起学习,加油!加油! 阅读详情

相关推荐

Protege本体建模实战:从零构建电影知识图谱并导入Neo4j

本体建模是知识图谱构建的基石,通过类、属性、实例和约束系统描述领域知识,为数据提供可复用的语义骨架。OWL作为本体描述语言的标准,配合Protege工具可实现可视化建模,并借助推理机验证逻辑一致性,提升模型可靠性。在工程落地中,本体模型常需导入图数据库如Neo4j,以支持高效的关联查询与业务应用。本文以影视领域为背景,完整演示Protege中定义类层级、创建对象/数据属性、填充实例,以及导出OWL文件并通过Python脚本转换为Neo4j节点与关系的全过程,同时梳理命名空间、匿名节点、编码等易踩坑点,帮助读

weixin_29047545的博客 279

问题 B: Reversible Cards

时间限制:1Sec内存限制:128 MB 题目描述 We have N cards numbered 1 to N. Each side of each card has a color represented by a positive integer. One side of Card i has a color ai, and the other side has a color bi. For each card, you can choose which side shows up....

QXK_Jack的博客 318

在Modelsim中手动添加仿真库

缘由:在使用rom ip核的时候发现仿真需要altera_mf库的支持,而我的ModelSim没有这个库,所以想写一篇手动添加仿真库的文章方便自己以后使用:首先新建一个库,名字叫做altera_mf:然后编译对应的库文件:这里altera_mf.v文件是在quartus安装路径下quartus\eda\sim_lib文件夹下,点击编译后退出:最后在modelsim->example文件夹下可以找到编译好的库文件:

欢迎一起交流问题! 3402

备战蓝桥杯——STL之vector的常见用法

一、基本操作 #include<vector> ****创建向量组vector 对象vector<int> v; ****尾部插入int数v.push_back(a); ****使用下标访问元素,下标是从0开始的。同数组一样cout<<v[0]<<endl; ****使用迭代器访问元素for(vector<int>::iterator it=v.begin(); it!=v.end(); it++){ cout<&...

sinat_56727392的博客 457

硬件基础——mos管

文章目录前言一、寄生参数二、使用步骤1.引入库2.读入数据总结 前言 MOS管设计重点 一、寄生参数 1.寄生电容 mos管有寄生电容Cgs,此电容大小一般为pF级别,一般规格书可以查到。 使用时,要特别注意GS管教的寄生电容Cgs,控制MOS管的导通与截止,本质上是控制Cgs电容的充放电。(最好要加限流) 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt imp

Malqaq的博客 6594

深入解析SerDes系统中的时钟数据恢复电路(CDR)——基于Cadence的PLL/Bang-Bang/PS-PI架构实现与仿真

本文深入解析SerDes系统中的时钟数据恢复电路(CDR),重点探讨基于Cadence平台的PLL、Bang-Bang和PS-PI三种架构的实现与仿真。通过详细的技术对比和工程实践案例,揭示CDR在高速串行通信中的关键作用,并提供TSMC 28nm工艺下的优化策略与故障排查经验,助力工程师应对10Gbps以上SerDes设计挑战。

weixin_29202687的博客 249

拓扑排序例题

拓扑排序例题: 模板题1:P4017 传送 题意: 给你一个食物网,你要求出这个食物网中最大食物链的数量。 (这里的“最大食物链”,指的是生物学意义上的食物链,即最左端是不会捕食其他生物的生产者,最右端是不会被其他生物捕食的消费者。) Delia 非常急,所以你只有 111 秒的时间。 由于这个结果可能过大,你只需要输出总数模上 801120028011200280112002 的结果。 输入: 第一行,两个正整数 n,mn,mn,m,表示生物种类 nnn 和吃与被吃的关系数 mmm 。 接下来 mmm 行

m0_51145827的博客 2895

BAT031:按列表名单将路径a下的文件夹批量剪切到路径b

摘要:按列表名单将路径a下的文件夹批量剪切到路径b。

qq_31762031的博客 1218

【id:107】【25分】B. 图综合练习--拓扑排序

在每组测试中,首先根据输入的矩阵大小初始化visit数组。接下来,通过拓扑排序找到全为0且未被选过的列,并输出其序号。最后,将该列对应的矩阵元素置为0。该代码实现了通过拓扑排序找到全为0且未被选过的列,并输出其序号。通过输入的测试次数和矩阵的大小,进行多组测试。程序中若include多过一个头文件,不看代码,作0分处理。已知有向图,顶点从0开始编号,求它的求拓扑有序序列。1.逐列扫描矩阵,找出入度为0且编号最小的顶点v。第三行起,输入n行整数,表示图对应的邻接矩阵。第一行输入一个整数t,表示有t个有向图。

归忆_AC的博客 668

学Simulink--基于新能源与储能系统的场景实例:压缩空气储能(CAES)系统热力学建模

本文介绍了使用Simulink对压缩空气储能(CAES)系统进行热力学建模的详细流程。重点讲解了系统各模块的设计方法,包括压缩机、储气装置、膨胀机和热交换器等核心组件的参数设置与计算模型。文章还提供了控制策略设计和仿真运行的具体步骤,通过建立MATLAB函数计算关键参数变化,并分析了系统性能评估指标。该建模方法可用于验证CAES系统的设计有效性,并为优化储能效率提供技术参考。全文采用模块化设计思路,为新能源与储能系统的仿真研究提供了实用案例。

xiaoheshang_123的博客 298

YOLO26中的PPM空间金字塔池化:改良设计与多尺度特征提取教程

在计算机视觉的语义分割任务中,准确理解图像中的上下文信息至关重要。例如,在街景图像中,可能同时存在远处的小汽车和近处的大建筑物,网络需要具备捕获多尺度上下文信息的能力。例如,要正确识别图像中的"船",不仅需要看到船本身的特征,还需要理解周围的水面环境。金字塔的每一层对应不同的池化尺度,从细粒度到粗粒度,形成了多层次的特征表示。PPM(Pyramid Pooling Module)正是为了解决这一问题而提出的模块,它通过构建金字塔形状的池化结构,有效地聚合不同尺度的上下文信息,从而提升语义分割的精度。

LXY_LOVE36的博客 82

拓扑排序基础详解,附有练习题

入度:有多少个点可以指向该点,例如图中点4,点2和3指向4,故4的入度为2出度:该点指向多少个点,例如图中点1,指向点2和3,故1的出度为2。

clmm_的博客 294

WPF实战案例 | C# WPF实现大学选课系统

WPF实战案例_C# WPF实现大学选课系统, C# WPF实现大学选课系统,大作业,毕业设计,该系统实现多身份登录、修改密码、课程的管理,个人信息的管理等功能。这个源码让你快速搭建自己的应用程序,注释完整,代码规范,各种风格都有,代码上手简单,代码独立,可以直接用程序打开,运行使用。也可直接点击EXE运行程序。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4622

拓扑排序及练习题

拓扑排序及练习题一、概念简介1、拓扑排序2、邻接矩阵3、邻接表二、练习题-最大食物链三、拓扑排序详解文章地址 一、概念简介 在后续题目中会提及这些概念,所以先给出一个简介。 1、拓扑排序 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的

weixin_45218241的博客 1799

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【算法练习】拓扑排序

拓扑排序BFS+入度表 /DFS遍历

一蓑烟雨任平生 436

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

跟我一起学“仓颉”算法-拓扑排序练习题

本章为大家详细的介绍了仓颉数据结构与算法中拓扑排序练习题的内容。

Cool_foolisher的博客 389

笔试练习day15(分组 拓扑排序 重做)

平方数链接 这道题就是求给出一个数,理他最近的平方数,这道题我们可以直接用sqrt函数,他是在math.h文件里面的,当我们用的时候,他会将结果向下取整 另外我们还需要注意一点,这道题的数据范围有点大,我们要用long long类型,不然存不下 分组 分组链接这道题要注意有几种声部,如果声部类型大于分组的数量,那么就肯定是不可能分成功的,如果是小于的话就需要我们合理的进行分配了首先我们可以先统计每个声部有多少人 对于分小组,如果我们直接拿着人数分,这样是不行的,因为我们不确定一个类型的声部应该要分多少组,以

2301_79178723的博客 1001

【算法练习】数据结构/图论 poj4084:拓扑排序

题目链接:http://bailian.openjudge.cn/practice/4084 4084:拓扑排序 总时间限制: 1000ms 内存限制: 65536kB 描述 给出一个图的结构,输出其拓扑排序序列,要求在同等条件下,编号小的顶点在前。 输入 若干行整数,第一行有2个数,分别为顶点数v和弧数a,接下来有a行,每一行有2个数,分别是该条弧所关联的两个顶点编号。 v<=100, a<=500 输出 若干个空格隔开的顶点构成的序列(用小写字母)。 样例输入 6 8 1 2 1 3 1 4

一蓑烟雨任平生 1271

拓扑排序(练习题)

当然互相没有关系的杂务可以同时工作,并且,你可以假定 John 的农场有足够多的工人来同时完成任意多项任务。入度为0的开始,level为1,往后累加。这里用的out数组,开始用的vector,MLE,TLE,还有初始化问题。累加,上一个点的答案累加到下一个点。初始为1,最后每一条路都会累加到出度为零的点,再加一块。行,每行两个正整数,表示被吃的生物A和吃A的生物B。每个火车,从始到终没停的站点,可以看作已停的入度。2.弹出队首,将其邻居点入度-1,入度=0,入队。个杂务的清单,并且这份清单是有一定顺序的,

2301_81692739的博客 1290

图综合练习--拓扑排序

已知有向图,顶点从0开始编号,求它的求拓扑有序序列。拓扑排序算法:给出有向图邻接矩阵1.逐列扫描矩阵,找出入度为0且编号最小的顶点v2.输出v,并标识v已访问3.把矩阵第v行全清0重复上述步骤,直到所有顶点输出为止。

m0_74919335的博客 553

拓扑排序板子练习

拓扑排序想必不用再多介绍了,下面来看看拓扑排序的一个板子(遍历某一个点的所有边),并做两道拓扑排序相关的例题。

m0_52711790的博客 633

图综合练习--拓扑排序_拓扑排序

一个场景在大学里,每当到了期末的时候,你一定会头疼于选课给你带来的困扰。其中一项就是先修课的问题,每次你高高兴兴地选了自己心仪的选修课时,却发现自己不满足先修课的要求,只好默默地退掉。到底怎样安排我们的课才能保证不会有这种麻烦呢?这一次,我们就来讨论一下这个问题。假设大学里开设了这些课程:高等数学,线性代数,概率论,数据结构,机器学习和计算机视觉。它们存在这样的先修关系:线性代数的先修课为高等数学...

weixin_39609170的博客 430

拓扑排序练习(待补)

HDUProblem - 1285拓扑排序 思路: 将数据存为有向图,每个顶点的入度即为被打败的次数。首先,第一名没有被打败过,入度为0,弹出,并且剩下的所有被他打败的人的排名都提升了一位,再找出当前情况下的第二个“第一”重复此操作,采用拓扑排序实现 //#include<bits/std c++.h> #include <iostream> #include<ctime> #include<math.h> #include<string&.

m0_60777643的博客 270

拓扑排序练习题

A题:HDU1285    题解传送门        拓扑排序模板,注意输出格式,最后没有空格 B题:POJ 2367    题解传送门         也是模板题,注意题意:第i行中的每个数字j表示j是i的后代。利用这条信息建图。每行输入以0结束 C题:UVA 10305  题解传送门         模板题。。注意输入停止条件是while(cin&gt;&gt;n&gt;&gt;m&amp...

执念 3829

2016春季练习——拓扑排序

拓扑排序

kiss forever 497

拓扑排序的练习

洛谷P4017 最大食物链计数 题目背景 你知道食物链吗?Delia 生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条。于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧。 题目描述 给你一个食物网,你要求出这个食物网中最大食物链的数量。 (这里的“最大食物链”,指的是生物学意义上的食物链,即最左端是不会捕食其他生物的生产者,最右端是不会被其他生物捕食的消费者。) Delia 非常急,所以你只有 11 秒的时间。 由于这个结果可能过大,你只需要输出总数模上 8011200

weixin_47750287的博客 363
上一篇: Python使用小技巧---去除列表当中换行
下一篇: Trailing Zeroes (III) LightOJ - 1138 (阶乘中某质因子的幂+二分查找)
Re:fused
博客等级 码龄9年 474粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值