不定基进制

kongl123 2009-06-29 09:50:55
在一般的进制中,一个数X可以唯一地被分解为a[1]*b^k + a[2]*b^(k-1)...+a[k+1]*b^0。现在问有没有这样一种运算集,对一个整数的子集,它的每个元素Y能而且只能被唯一地分解为一种像这样的形式:a[1]*b[1]+a[2]*b[2]...+a[k]*b[k],其中b是一组预先确定的数字,且当n!=m时,有b[n]!=b[m]? 如果有,如何算出一组b的解;这个子集相对整数集的疏密度如何;怎么找出一组b的解,使得这个子集更加稠密?
...全文
56 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
kongl123 2009-06-30
  • 打赏
  • 举报
回复
我说的k维是指b有k个元素,但Y是一维的,就是Y是a和b的点积。
kongl123 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 fire_woods 的回复:]
如果是实数域,b是k维向量的话,对应的问题实际上是一个求矩阵秩的问题.

整数域太复杂了,说不清楚.
不过b = {[1,0...0], [0,1,...0]...[0,0...,1]}
依然是一组全覆盖的基向量.
[/Quote]

b = {[1,0...0], [0,1,...0]...[0,0...,1]} 不能保证a是唯一解吧
chuengchuenghq 2009-06-30
  • 打赏
  • 举报
回复
UP
fire_woods 2009-06-30
  • 打赏
  • 举报
回复
如果是实数域,b是k维向量的话,对应的问题实际上是一个求矩阵秩的问题.

整数域太复杂了,说不清楚.
不过b = {[1,0...0], [0,1,...0]...[0,0...,1]}
依然是一组全覆盖的基向量.
kongl123 2009-06-30
  • 打赏
  • 举报
回复
1的确是一组解。
如果说b是k维向量,那怎么样?能否存在一种构造方法?因为实际中我需要的b的维数至少是32
fire_woods 2009-06-30
  • 打赏
  • 举报
回复
提供一组解.
b[] = {1}
对所有整数都有唯一解.
对于b元素大于一个的,无法覆盖整个整数集合.
kongl123 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fire_woods 的回复:]
引用 5 楼 kongl123 的回复:
引用 3 楼 fire_woods 的回复:
一个数X可以唯一地被分解为a[1]*b^k + a[2]*b^(k-1)...+a[k+1]*b^0

其实并不是唯一的.你可以分解成(a[1]-1)*b^k + (a[2]+b)*b^(k-1)...+a[k+1]*b^0

对于进制分解,要求a[i] <b;

楼主的想法里面,对a[i]的约束是什么呢?


你考虑的是实数,但对一个数的分解来说一般是指整数分解,我的意思也是基于整数的



说的都是整数来着.
[/Quote]

是的,我引用错了。我本来的意思是说4楼的欧几里得算法,它的系数可以是实数。
你说的k进制的分解不唯一是指系数可以超过基大小,我一开始的意思是指进制展开,所以系数是0-k,是我没说清。
我问的问题中对系数是没有要求的,只要是整数,而且对一个数Y只有唯一一组系数在确定的基b下是它的一个分解。
fire_woods 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kongl123 的回复:]
引用 3 楼 fire_woods 的回复:
一个数X可以唯一地被分解为a[1]*b^k + a[2]*b^(k-1)...+a[k+1]*b^0

其实并不是唯一的.你可以分解成(a[1]-1)*b^k + (a[2]+b)*b^(k-1)...+a[k+1]*b^0

对于进制分解,要求a[i] <b;

楼主的想法里面,对a[i]的约束是什么呢?



你考虑的是实数,但对一个数的分解来说一般是指整数分解,我的意思也是基于整数的
[/Quote]

说的都是整数来着.
fire_woods 2009-06-30
  • 打赏
  • 举报
回复
b是一维的时候有解,其他的均无解.

二维的话
假设Y = a1*b1 + a2*b2 是一个解
那么Y=(a1-b2)*b1+(a2+b1)*b2也是一个解
当然可以构造出无穷多个解来.
更高维也是一样的.
fire_woods 2009-06-30
  • 打赏
  • 举报
回复
哦,原来如此.
kongl123 2009-06-29
  • 打赏
  • 举报
回复
引用都错的,不好意思,第一次用哈哈!
kongl123 2009-06-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kongl123 的回复:]
是可以考虑质数,但不只是质数这么简单。先就简单的说,当b只用两个元素时:Y=a1*b1+a2*b2,那么有a1*b1 != a2*b2(不然有多种分解结果)。但当变数a1为b2的合数时,不论b1,b2为何值,其不等式可以不成立,这样,这个数集要在整数的基础上减掉a因子中包含基b中的因子时的所有元素,所以,当b很小时,要删去的元素很多,使这个数集很稀疏;不然当b很大时,a*b本身就很稀疏。在计算机中,用确定位长的整数表示这个集合时,其元素个数…
[/Quote]

我对a没有要求,前面说的都是基于唯一这个要求推出来的
kongl123 2009-06-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fire_woods 的回复:]
一个数X可以唯一地被分解为a[1]*b^k + a[2]*b^(k-1)...+a[k+1]*b^0

其实并不是唯一的.你可以分解成(a[1]-1)*b^k + (a[2]+b)*b^(k-1)...+a[k+1]*b^0

对于进制分解,要求a[i] <b;

楼主的想法里面,对a[i]的约束是什么呢?
[/Quote]

你考虑的是实数,但对一个数的分解来说一般是指整数分解,我的意思也是基于整数的
绿色夹克衫 2009-06-29
  • 打赏
  • 举报
回复
Y = a1*b1 + a2*b2 可以用欧几里得扩展来解,只存在有解同无解的差别。有解的话,解会是无限多个。
Y = a1*b1 + a2*b2 + a3*b3 的解会更稠密,不会稀疏。

[Quote=引用 2 楼 kongl123 的回复:]
是可以考虑质数,但不只是质数这么简单。先就简单的说,当b只用两个元素时:Y=a1*b1+a2*b2,那么有a1*b1 != a2*b2(不然有多种分解结果)。但当变数a1为b2的合数时,不论b1,b2为何值,其不等式可以不成立,这样,这个数集要在整数的基础上减掉a因子中包含基b中的因子时的所有元素,所以,当b很小时,要删去的元素很多,使这个数集很稀疏;不然当b很大时,a*b本身就很稀疏。在计算机中,用确定位长的整数表示这个集合时,其元素个数…
[/Quote]
fire_woods 2009-06-29
  • 打赏
  • 举报
回复
一个数X可以唯一地被分解为a[1]*b^k + a[2]*b^(k-1)...+a[k+1]*b^0

其实并不是唯一的.你可以分解成(a[1]-1)*b^k + (a[2]+b)*b^(k-1)...+a[k+1]*b^0

对于进制分解,要求a[i]<b;

楼主的想法里面,对a[i]的约束是什么呢?
kongl123 2009-06-29
  • 打赏
  • 举报
回复
是可以考虑质数,但不只是质数这么简单。先就简单的说,当b只用两个元素时:Y=a1*b1+a2*b2,那么有a1*b1 != a2*b2(不然有多种分解结果)。但当变数a1为b2的合数时,不论b1,b2为何值,其不等式可以不成立,这样,这个数集要在整数的基础上减掉a因子中包含基b中的因子时的所有元素,所以,当b很小时,要删去的元素很多,使这个数集很稀疏;不然当b很大时,a*b本身就很稀疏。在计算机中,用确定位长的整数表示这个集合时,其元素个数很有限。当b的元素更多时,它的疏密度就更稀疏了。要怎么解决这个问题呢?
daidodo 2009-06-29
  • 打赏
  • 举报
回复
考虑用质数分解,那么b[m]与b[n]必须包含不用的质数因子。

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧