两个值组成的唯一值生成第三种唯一值的方式有哪些?

2018-10-05 15:00:45 +08:00
 ukipoi

比如 xy 的二维坐标轴。 其中的每一个点都有一个唯一的 x 和 y 值的组合。 那么能通过哪些方法来组合生成一个新的值,并且他是唯一的? 今天在看到线面上的点是相同的时候看到的解答。 面上的一个点,假设坐标(0.123 ,0.456)。那么依次插入会得到这样一个值 0.142536。把这个值当做直线的坐标,这个值在线上是唯一的。 顺便有人能证明下这种方式生成的线是连续的吗?

4360 次点击
所在节点    程序员
19 条回复
ngg0707
2018-10-05 15:11:03 +08:00
哈希?
innoink
2018-10-05 15:13:16 +08:00
不就是单调函数吗?
Yafeng043
2018-10-05 15:26:10 +08:00
楼上启发的思路,考虑一个三维空间的直线方程,有很多单调的函数满足。可以了解一下 geohash 扩展一下思路。或者用二进制序列表示一个坐标数值,两个二进制坐标做奇偶交叉。
ukipoi
2018-10-05 15:28:09 +08:00
@innoink 是的诶,这么一说这个问题就是 二元函数的单调性问题了,所有的平面都是成立的了。
不过多元函数有单调性这个概念麽。
momocraft
2018-10-05 15:31:33 +08:00
(如果座标是实数)

R^2 和 R 等势(均为\aleph_1 )

如果你的 R^2 -> R 函数是双射的那应该就是唯一的(好像是废话)
ukipoi
2018-10-05 15:35:12 +08:00
@Yafeng043
其实我是好奇[合并方法是将经度、纬度二进制按照奇偶位合并]这种方式将两个数生成了一个新的数。而这个数是唯一的。有没有其他的方法可以办到同样的事情。
imn1
2018-10-05 15:39:04 +08:00
0 和 1
guyskk0x0
2018-10-05 15:40:40 +08:00
x 和 y 分别用 N bit 表示,拼接成 2N bit 就可以了
Daath
2018-10-05 15:53:07 +08:00
不知道我这么想对不对,做个参考吧
1.xy 坐标构成的二维平面,这个平面上的点,属于自然数,自然数是唯一,那两点确定线段,那么线段就是唯一的,将线段延伸多个点,构成一条直线,那么散落在这条直线的点都唯一的了,同时这条直线就是连续的。

2.假设存在两个相同的 ab 点在同条线上,取在线上另外一点 c,分别与这两个相同点相连,则有两条线段 ca 与 cb,根据两点确定一条线段,且 abc 三点同一条直线,那么 ca 与 cb 就是同一条线段(重叠),那么 ab 两点重叠,所以假设不成立,则线上的点是唯一的。把线段延伸 n 个点,构成一条直线,而这 n 个点是唯一的,所以直线就连续的。

我的想法就这样吧。😂
zealot0630
2018-10-05 15:53:38 +08:00
按位分配的方法是不行的 因为 1 = 0.9999999... 两种表示的数字完全相同 1/11 = 0.09090909 <---> (0, 1), 另一方面 1 <---> (0, 1) 所以这种方法是错的
Yafeng043
2018-10-05 15:54:13 +08:00
@ukipoi geohash 这么设计是有地理空间上的好处。我觉得首先要确定你要保持这种映射之后具备的特性有哪些,然后去设计函数
RecursiveG
2018-10-05 16:15:03 +08:00
各种空间填充曲线欢迎你。
我记得有个定理说不存在 R 到 R^n 的连续双射。
如果你是想问值域连不连续,那么值域是 R 是连续的。
epicnoob
2018-10-05 16:54:25 +08:00
够写一本书了
kailium
2018-10-05 17:15:11 +08:00
@ukipoi 通过对用你方法生成的点进行平移,可以得到无数种满足你要求的方法。
jimages
2018-10-05 17:24:53 +08:00
三维球坐标画一条线…笛卡尔转化成球坐标得到第三个坐标然后再换成笛卡尔坐标
Shura
2018-10-05 17:49:20 +08:00
zealot0630
2018-10-05 20:27:07 +08:00
@Shura 楼主要的函数肯定不是线性变换,有一个理由上面有人说了,这个映射肯定不是连续的,所以不可能是线性的.

反证也很容易
若 L(2u,2v) = 2w
则 L(u, 2v) = w
并且 L(2u, v) = w
所以 L(u, 2v) = L(v, 2u)

这个映射不唯一,证毕
zealot0630
2018-10-05 20:27:53 +08:00
上面最后一句错了 是 L(u, 2v) = L(2u, v)
zilaijuan
2018-10-06 19:13:08 +08:00
我得 geohash 就可以吧,如果你的需要类似于空间曲线填充的话。
你可以看看这个希尔伯特曲线是不是你想要的
https://www.bilibili.com/video/av4201747

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/495030

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX