草庐IT

分组算法

全部标签

社区发现算法——Louvain 算法

Louvain算法原始论文为:《Fastunfoldingofcommunitiesinlargenetworks》。所以又被称为Fastunfolding算法。Louvain算法是一种基于模块度的社区发现算法。其基本思想是网络中节点尝试遍历所有邻居的社区标签,并选择最大化模块度增量的社区标签。在最大化模块度之后,每个社区看成一个新的节点,重复直到模块度不再增大。首先复习下模块度:这里引入了权重方便扩展到有权图,但其实对于无权图,可以看做所有边权重为1,这时候就等于用节点的度计算,用度理解一样。算法详述:模块度优化阶段:每个节点将自己作为自己社区标签。每个节点遍历自己的所有邻居节点,尝试将自己

SIFT算法详解

大纲引言一、高斯金字塔二、高斯差分金字塔三、特征点处理1.阈值化2.非极大值抑制3.二阶泰勒修正4.低对比度去除5.边缘效应去除四、特征点描述子1.确定特征点区域方向2.特征点区域描述子总结参考:引言 SIFT算法是为了解决图片的匹配问题,想要从图像中提取一种对图像的大小和旋转变化保持鲁棒的特征,从而实现匹配。这一算法的灵感也十分的直观:人眼观测两张图片是否匹配时会注意到其中的典型区域(特征点部分),如果我们能够实现这一特征点区域提取过程,再对所提取到的区域进行描述就可以实现特征匹配了。于是问题就演变成了以下几个子问题:应该选取什么样的点作为特征点呢?:人眼对图像中的高频区域更加的敏感,由此我

c# - 实心圆的中点圆算法

Midpointcirclealgorithm可用于栅格化圆的边界。但是,我希望圆圈被填充,而不是多次绘制像素(这很重要)。这个答案提供了一个生成实心圆的算法的修改,但是一些像素被访问了几次:fastalgorithmfordrawingfilledcircles?问:如何在不多次绘制像素的情况下光栅化一个圆?请注意,RAM非常有限!更新:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceCircleTest{classProgram{staticvoidMain

c# - Linq Getting Customers 按日期分组,然后按类型分组

我正在使用C#中的LINQ生成报告以向客户展示。我想显示没有。每种类型的客户。注册的客户有客人和经理三种类型。我想按客户注册日期分组,然后按客户类型分组。即,如果今天插入了3位客人、4位注册人和2位经理。明天4,5和6分别注册。然后报告应显示当天注册的客户数量。每种类型单独一行。DATETYPEOFCUSTOMERCOUNT31-10-2013GUEST331-10-2013REGISTERED431-10-2013MANAGER230-10-2013GUEST530-10-2013REGISTERED1030-10-2013MANAGER3像这样。varsubquery=fromea

c# - TSP遗传算法中的交叉操作

我正在尝试解决TravellingSalesmanProblem(TSP)与Geneticalgorithm.我的基因组是图中顶点的排列(推销员的路径)。我应该如何对我的基因组进行交叉操作?在哪里可以找到我的问题在C#中的实现? 最佳答案 您应该查看GokturkUcoluk的“GeneticAlgorithmSolutionoftheTSPAvoidingSpecialCrossoverandMutation”。它概述了用于排列的特殊交叉运算符,并提出了一种巧妙的排列表示形式,可以很好地与标准交叉配合使用(即交叉两个排列总是产生两

c# - 使用 LINQ 对备用对进行分组

我正在尝试对DTOs的列表进行分组其中包含备用家庭对,以按照以下格式对它们进行分组,以尽量减少重复。这是我目前拥有的DTO结构,如您所见,这些行也可以根据反向关系组合在一起。+----------+------------+-----------+|PersonId|RelativeId|Relation|+----------+------------+-----------+|1|2|"Son"||2|1|"Father"||1|3|"Mother"||3|1|"Son"||2|3|"Husband"||3|2|"Wife"|+----------+------------+---

c# - 使用 Linq 按可变整数范围分组

我正在尝试根据整数范围对一组数据进行分组,该范围不会以固定间隔增加。例如我有商品ID价格1102303504120我想将价格为0-10、11-100和100-500的商品分组。因此,项目1在A组中,项目2,3在B组中,项目4在组C中。我能想到的最接近的是从项目按(items.price/10)对项目进行分组然后将这些组加入到一起以获得不同的范围。有什么想法吗? 最佳答案 参数化范围上限列表...varceilings=new[]{10,100,500};vargroupings=items.GroupBy(item=>ceiling

c# - 在两个大数之间获得素数的高效算法

我是C#的初学者,我正在尝试编写一个应用程序来获取用户输入的两个数字之间的素数。问题是:在大数(有效数在1到1000000000范围内)获取素数需要很长时间,根据我要解决的问题,整个操作必须在一个小的时间间隔内进行。这是更多解释的问题链接:SPOJ-Prime这是我的代码中负责获取质数的部分:publicvoidGetPrime(){intL1=int.Parse(Limits[0]);intL2=int.Parse(Limits[1]);if(L1==1){L1++;}for(inti=L1;i有没有更快的算法?提前致谢。 最佳答案

c# - .NET LINQ 按日期(天)对实体进行分组

我在这里发布了同样的问题:LINQtoEntitiesgroup-byfailureusing.date但是,答案并非100%正确。它适用于所有情况,除非使用不同的时区。当使用不同的时区时,它也会按时区分组。为什么?我设法通过使用许多实体函数来绕过它。intlocalOffset=Convert.ToInt32(TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).TotalMinutes);varresults=(fromperfEntryindb.entrywhere(....)selectnew{perfEntry.Operati

c# - 寻找如何重构我的算法的想法

我正在尝试自己编写GameofLife,有我自己的一套规则。我想应用的第一个“概念”是社会化(这基本上意味着细胞是想独处还是想与其他细胞成群结队)。数据结构是二维数组(目前)。为了能够将一个单元格移动到/远离一组其他单元格,我需要确定将它移动到哪里。这个想法是,我评估该区域(邻居)中的所有单元格并获得一个向量,它告诉我将单元格移动到哪里。向量的大小为0或1(不移动或移动),角度为方向数组(上、下、右、左)。这是一张表示细胞受力的图像,就像我想象的那样(但范围可能超过5):让我们以这张照片为例:Forcesfromlowerleftneighbour:down(0),up(2),righ