Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于比较的哈希函数_C#_Wolfram Mathematica - Fatal编程技术网

C# 用于比较的哈希函数

C# 用于比较的哈希函数,c#,wolfram-mathematica,C#,Wolfram Mathematica,我想知道散列函数是否能创建一个唯一的数字。 是否还有可以用于近似比较的哈希函数 比如说 6 7 8 9 10 11 23 40 10 5 8 10 9 9 12 24 40 20 would match 25 7 12 9 10 12 90 90 would not match 我想知道这是因为我在考虑模式识别。我想知道是否有一些数学可以给你一个匹配的百分比,你想找到。使用C#作为编程语言 一些澄清,首先让我解释一下我喜欢捕捉什么的同义词。 想象一下水滴落下,但它不是恒定流

我想知道散列函数是否能创建一个唯一的数字。 是否还有可以用于近似比较的哈希函数

比如说

6 7 8  9 10 11 23 40 10 
5 8 10 9  9 12 24 40 20   would match

25 7 12  9 10 12 90 90    would not match
我想知道这是因为我在考虑模式识别。我想知道是否有一些数学可以给你一个匹配的百分比,你想找到。使用C#作为编程语言

一些澄清,首先让我解释一下我喜欢捕捉什么的同义词。 想象一下水滴落下,但它不是恒定流动的。 测量工具也不完善。所以现在我正在计时下降的液滴之间的差异,这是一个系列的测量,比如说19到25个液滴,事实上我可以一次测量这样一个系列,例如,如果我有相机并拍摄它

现在我想弄清楚,下一个系列开始时,这个“系列”是不同的还是相同的,系列之间可能有随机的时间间隔,测量工具不检测系列的开始或结束,它们一次只进行19或25次测量


我不知道该往哪个方向走,也许是模糊逻辑,神经网络模式检测,距离向量。。有很多种方法,但我想知道是否会有更简单的方法(我想的是散列,但可能应该是其他方法)。

散列函数可以用于(而不是唯一地)识别某些值。它们不能保证是唯一的(更确切地说,可以保证某些不同的值将具有相同的哈希代码)。值的微小偏差通常会导致完全不同的哈希代码(正如@Bobson已经提到的)。哈希代码的另一个用途是在恒定时间内发现两个值相等

也许可以设计一个哈希代码函数来做你想做的事情,特别是如果你知道你的值所在的域。但这需要数学背景

据我所知,你给出的例子没有哈希函数

这里是整数的另一个想法,使用模10运算并计算每个数字之间的绝对差。用这种方法计算两个数字之间的“距离”,而不是“差”。我曾经在字符串上做过类似的操作,以找到彼此接近的字符串

一些伪代码:

int Distance(int x, int y)
{
    int result = 0;
    while ((x > 0) && (y > 0))
    {
        result += abs(x%10 - y%10);
        x /= 10;
        y /= 10;
    }
    return result;
}

void Caller()
{
    int distance = Distance(123, 456);

    if (distance == 0) write("x and y are equal");
    else write("the relative distance between x and y = " + distance.ToString())'
}

我肯定有模糊逻辑算法可以做到这一点,但我不认为哈希法能帮到你。这不是一个便宜的算法(可能没有散列算法便宜),如果你严格使用整数,为什么不使用某种形式的距离公式来计算两点之间的距离并打印出来呢?散列用于创建数据的全局唯一指纹,对相似的输入进行比较实际上与大多数散列的用途相反。散列函数的设计通常使相似的数据具有尽可能远的散列。这不是你要找的算法。可能相关:和。此外,哈希函数不会创建唯一的数字。多个数据流可以散列到同一个值。这个问题需要澄清。您是在试图避免存储/处理整个大型阵列,还是只是在问如何进行模式识别?如果您想高效地存储大型阵列并保持其基本特性,那么一些图像压缩算法可能会很有用?。我也一直在想一点模,但例如:68 72可能不匹配,而72 76可能匹配,但我想知道它是否可以用于Patren搜索,类似hm的数字序列。我正在做一些传感器读数,想知道我是否能检测到其中的模式。@user613326-你可能想继续问,以找出一个好的算法来搜索整数集中的模式。@user613326任何基数都可以。10是很自然的。另一件要做的事是根据与最低有效ditig之间的距离对数字之间的差异进行加权。如果加权因子等于基数,则距离等于差值(因此绕过此算法的目标;-)