草庐IT

algorithm

全部标签

c# - 在推荐系统中使用矩阵分解

我正在为餐厅开发一个推荐系统,使用C#6.0中基于项目的协作过滤器。我想设置我的算法以尽可能好地执行,所以我研究了一些不同的方法来预测用户尚未评论的餐厅的评分。我将从我所做的研究开始首先,我想使用用户之间的PIL逊相关性来设置一个基于用户的协作过滤器,以便能够看到哪些用户适合在一起。这样做的主要问题是计算这种相关性所需的数据量。首先,您需要同一家餐厅的每2位用户4条评论。但是我的数据将非常稀疏。不可能有2位用户评论了完全相同的4家餐厅。我想通过扩大匹配项来解决这个问题(即不匹配同一餐厅的用户,而是同一类型餐厅的用户),但这给了我一个问题,即很难确定我将在相关性中使用哪些评论,因为一个用

c# - 在 C# 中计算数组频率分布的最快方法是什么?

我只是想知道该计算的最佳方法是什么。假设我有一个值输入数组和边界数组-我想为边界数组中的每个段计算/分桶化频率分布。为此使用桶搜索是个好主意吗?其实我发现了那个问题Calculatingfrequencydistributionofacollectionwith.Net/C#但我不明白如何为此目的使用桶,因为在我的情况下每个桶的大小可能不同。编辑:在所有讨论之后,我有了内/外循环解决方案,但我仍然想用字典消除内循环以获得O(n)性能,如果我理解正确的话,我需要将输入值散列到桶索引中。所以我们需要某种复杂度为O(1)的哈希函数?有什么想法吗? 最佳答案

c# - 比较两个列表并找到这两个列表之间的增量的最有效模式/算法是什么?

我们有两个列表,比如说学生和他们的分数。我想比较这两个列表并找到新列表和旧列表之间的增量,然后找到侵入性最小的方式将任何更改插入或更新到新列表中。解决这个问题的最佳算法是什么?希望专注于对新列表和性能进行最少的更改。示例代码:ListexistingList=newList();ListnewList=newList();publicTopLists(){InitTwoLists();}privatevoidInitTwoLists(){existingList.Add(newListItem{Name="Shane",Score=100});existingList.Add(newL

c# - 在字符串中查找关键字和关键短语的算法

我需要有关如何编写算法以在字符串中查找关键字或关键短语的建议或指导。字符串包含:以英语(GB)编写的技术信息单词之间大多用空格隔开关键字不包含空格,但可以包含连字符、撇号、冒号等。关键词可以包含空格、逗号或其他标点符号如果两个或多个关键字一起出现,那么它很可能是一个关键短语,例如“变频驱动”文本还包含HTML,但如有必要,可以事先将其删除非关键字可以是“and”、“the”、“we”、“see”、“look”等词。关键字不区分大小写,例如“逆变器”和“逆变器”是同一个关键字算法有如下要求:在批处理场景中操作,例如每天跑一次或两次处理长度从大约200到7000个字符不等的字符串在不到1小

c# - 锦标赛分组算法(NCAA 等)

我正在尝试在我的程序中实现一个括号(使用C#/.NETMVC),但我一直在尝试找出一些算法。例如,我有一个这样的括号,其中包含8个条目(A、B、C、D、E、F、G、H)我想弄清楚是否有一种算法方法可以根据条目数,找出条目数每轮比赛根据条目数,对于具体游戏#,是什么下一个对应的游戏#圆?例如,在这种情况下,对于8个条目,示例是:第一轮有4场比赛。第二轮,2场比赛。第3轮,1场比赛第1轮的第2场比赛对应第2轮的第5场比赛。我也考虑过将这些信息存储在一个表中,但它似乎有点过分了,因为它永远不会改变,但无论如何它就在这里:任何帮助将不胜感激!干杯,院长 最佳答案

c# - 使用通配符检查文件名搜索模式中的冲突

我需要通过检查/比较表达式来比较文件系统通配符表达式以查看它们的结果是否重叠。例如,我们正在构建一个实用程序,它可以根据文件系统通配符表达式将一个(或多个位置)的文件分类到单独的文件夹中。例如:*.txt进入文件夹a,*.doc进入文件夹b,等等。我们支持的通配符是*和?我希望能够通过分析通配符表达式来确定它们是否会冲突/重叠。例如,如果我有以下表达式:*.x.y*.y它们会冲突(重叠),因为第二个表达式*.y会包含*.x.y结果。(例如A.x.y将匹配两个表达式)我通过使用所有表达式构建树结构来解决这个问题,我认为如果表达式冲突,构建树的行为就会失败。Forexample:*.xa.

c# - 打乱字符串,使相邻的两个字母不相同

我一直在尝试解决这个面试问题,该问题要求打乱一个字符串,以便没有两个相邻的字母相同例如,ABCC->ACBC我想到的方法是1)Iterateovertheinputstringandstorethe(letter,frequency)pairsinsomecollection2)Nowbuildaresultstringbypullingthehighestfrequency(thatis>0)letterthatwedidn'tjustpull3)Update(decrement)thefrequencywheneverwepullaletter4)returntheresultst

c# - 从原始波形数据中检测特定频率/音调

我正在读取来自麦克风的原始波流。(这部分工作,因为我可以将它发送到扬声器并得到很好的回声。)为简单起见,假设我想检测波形数据中的DTMF音调。实际上我想检测任何频率,而不仅仅是DTMF中的频率。但我始终知道我在寻找哪个频率。我已经尝试通过FFT运行它,但如果我想要高精度的检测(假设它只存在20毫秒),它似乎不是很有效。我可以将其检测到大约200毫秒的精度。关于算法,我有哪些选择?是否有任何.Net库? 最佳答案 您可能想查看Goertzelalgorithm如果您正在尝试检测特定频率,例如DTMF输入。有一个C#DTMFgenera

c# - 将字节数组转换为任何基数

我有一个字节数组(任意长度),我想使用我自己的基本编码器将这个数组编码成字符串。在.NET中是标准的Base64编码器,但是如果我想用Base62、Base53或Base13?是否有可能创建这样的通用基础编码器?我知道我可以用简单的方法做到这一点,即为每个字节保留固定数量的字符(如果是Base62,则为5个字符),然后直接执行byte->字符编码,但我会浪费空间,因为5个Base62字符能够包含超过1个字节但少于2个字节。我应该如何编写这样的编码器?或者已经有一些类(class)了吗?请注意,我也需要通用解码器,否则这对我没用。资源因为解决方案是已知的(使用BigInteger),我只

c# - 检查数组是否排序的最快方法

考虑到有一个从一个非常大的函数返回的数组。测试数组是否已排序的最快方法是什么?最简单的方法是://////Determinesifintarrayissortedfrom0->Max///publicstaticboolIsSorted(int[]arr){for(inti=1;iarr[i]){returnfalse;}}returntrue;} 最佳答案 您将必须访问数组的每个元素以查看是否有未排序的内容。您的O(n)方法几乎是最快的,无需任何关于数组可能状态的特殊知识。您的代码专门测试数组是否按较低索引处的较小值排序。如果这不