Similarity of Subtrees(深搜+hash、映射)

本文介绍了一种使用哈希方法解决特定树形结构问题的算法实现。通过将树节点转换为多项式并利用哈希表进行计数,可以高效地统计具有相同结构的子树数量。代码示例展示了递归深度优先搜索(DFS)的应用。

https://vjudge.net/problem/Aizu-2784

http://www.cnblogs.com/chen9510/p/5929542.html
hash方法,因为每一个一样的node都可以变为一个同样大小的多项式的。。。

map<ULL,LL>mp;
vector<int>g[N];
ULL dp[N];
LL ans;int n;
const ULL b=1000000007;
void dfs(int u,int fa){
    dp[u]=1;
    for(int i=0;i<g[u].size();++i){
        int v=g[u][i];
        if(v==fa)continue;
        dfs(v,u);
        dp[u]+=dp[v]*b;
    }
    ans+=mp[dp[u]];
    mp[dp[u]]++;
}
int main(){
    sf("%d",&n);
        ans=0;
        rep(i,1,n-1){
            int u,v;sf("%d%d",&u,&v);
            g[u].push_back(v);g[v].push_back(u);
        }
        dfs(1,1);
        cout<<ans<<'\n';
}
这个是完整源码 python实现 Django 【python毕业设计】基于Python的天气预报(天气预测分析)(Django+sklearn机器学习+selenium爬虫)可视化系统.zip 源码+论文+sql脚本 完整版 数据库是mysql 本研究旨在开发一个基于Python的天气预报可视化系统,该系统结合了Django框架、sklearn机器学习库和Selenium爬虫技术,实现对天气数据的收集、分析和可视化。首先,我们使用Selenium爬虫技术从多个天气数据网站实时抓取气象数据,包括温度、湿度、气压、风速等多项指标。这些数据经过清洗和预处理后本研究旨在开发一个基于Python的天气预报可视化系统,该系统结合了Django框架、sklearn机器学习库和Selenium爬虫技术,实现对天气数据的收集、分析和可视化。首先,我们使用Selenium爬虫技术从多个天气数据网站实时抓取气象数据,包括温度、湿度、气压、风速等多项指标。这些数据经过清洗和预处理后,将其存储在后端数据库中,以供后续分析。 其次,采用s,将其存储在后端数据库中,以供后续分析。 其次,采用sklearn机器学习库构建预测模型,通过时间序列分析和回归方法,对未来天气情况进行预测。我们利用以往的数据训练模型,以提高预测的准确性。通过交叉验证和超参数优化等技术手段,我们优化了模型性能,确保其在实际应用中的有效性和可靠性。 最后,基于Django框架开发前端展示系统,实现天气预报的可视化。用户可以通过友好的界面查询实时天气信息和未来几天内的天气预测。系统还提供多种图表类型,包括折线图和柱状图,帮助用户直观理解天气变化趋势。 本研究的成果为天气预报领域提供了一种新的技术解决方案,不仅增强了数据获取和处理的效率,还提升了用户体验。未来,该系统能够扩展至其他气象相关的应用场景,为大众提供更加准确和及时的气象服务。
Graph Matching Networks (GMNs)是一种用于学习图结构对象相似性的度学习模型,它特别设计用于处理节点、边和整个图级别的比较任务。在度学习领域,特别是在计算机视觉、社交网络分析或化学分子模拟等应用中,GMNs能够捕捉图形数据的复杂结构关系。 GMN的基本架构通常包括三个核心组件: 1. **嵌入层**:将输入的图结构转换成低维的向量表示,每个节点和边都被编码为固定维度的特征。 2. **匹配层**:通过聚合节点和边的信息来计算潜在的节点对之间的相似度矩阵。这一步经常利用图神经网络(如GCN或GAT)以及注意力机制来增强重要信息的学习。 3. **解码层**:结合相似度矩阵和其他上下文信息,可能会采用优化算法(如Hungarian算法)来找到最佳的节点配对,得出整体的图结构相似性得分。 一个简单的代码示例(基于PyTorch)可能看起来像这样: ```python import torch from torch_geometric.nn import GCNConv class GMN(torch.nn.Module): def __init__(self, in_channels, hidden_channels, out_channels): super(GMN, self).__init__() self.conv1 = GCNConv(in_channels, hidden_channels) self.conv2 = GCNConv(hidden_channels, out_channels) def forward(self, x, edge_index): # Embedding layer x = F.relu(self.conv1(x, edge_index)) x = F.dropout(x, training=self.training) # Matching layer (similarity matrix calculation) x1 = self.conv2(x, edge_index[:, 0]) x2 = self.conv2(x, edge_index[:, 1]) similarity = torch.matmul(x1, x2.t()) # Decode layer (usually Hungarian algorithm or custom matching function) return similarity # 使用示例 model = GMN(64, 128, 1) # 假设我们有64维的节点特征 x = ... # 输入节点特征 edge_index = ... # 输入边的连接信息 output = model(x, edge_index) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值