地图提供商(例如Google或Yahoo! Maps)如何提供方向?
我的意思是,他们可能有某种形式的真实数据,当然包括距离,但也可能包括行驶速度,人行道的存在,火车时刻表等.但是假设数据格式较简单,比如一个非常大的有向图边缘权重反映距离.我希望能够快速计算从任意点到另一个点的方向.有时这些点将在一起(在一个城市内),而有时它们将相隔很远(越野).
像Dijkstra算法这样的图算法不起作用,因为图形是巨大的.幸运的是,像A*这样的启发式算法可能会起作用.但是,我们的数据非常有条理,也许某种分层方法可能有用吗?(例如,存储远离某些"关键"点之间的预先计算方向,以及一些局部方向.然后,两个远点的方向将涉及到关键点的本地方向,到另一个关键点的全局方向,然后是本地方向方向再次.)
在实践中实际使用了哪些算法?
PS.这个问题的动机是通过在线地图方向找到怪癖.与三角形不等式相反,有时谷歌地图认为XZ需要更长时间,并且比使用XYZ中的中间点更远.但也许他们的步行路线也会针对另一个参数进行优化?
PPS.这是对三角不等式的另一个违反,它暗示(对我来说)他们使用某种分层方法:XZ与XYZ.前者似乎使用着名的Boulevard de Sebastopol,尽管它稍微偏离了方向.
编辑:这些例子似乎都不再起作用,但两者都是在原始帖子时完成的.
如何判断gcc(更具体地说,g ++)是否在特定函数中优化尾递归?(因为它出现了几次:我不想测试gcc是否可以优化尾递归.我想知道它是否优化了我的尾递归函数.)
如果您的答案是"查看生成的汇编程序",我想知道我正在寻找什么,以及我是否可以编写一个简单的程序来检查汇编程序以查看是否存在优化.
PS.我知道这似乎是问题的一部分,如果有的话,C++编译器会进行尾递归优化吗?从5个月前.但是,我不认为这个问题的这一部分得到了令人满意的答复.(答案是"检查编译器是否进行了优化(我知道)的最简单方法是执行调用,否则会导致堆栈溢出 - 或者查看汇编输出.")
现在,我知道SQL和正则表达式都很好,但在这个网站上几次,我遇到了一些在SQLzoo.net上练习的人.据我所知,这是一个很棒的在线资源,有人可以很容易地通过示例学习SQL,针对几个玩具数据库编写许多玩具查询.我可能会将想要学习SQL的人重定向到该网站.
这些SQLzoo人员还运行一些其他教程,包括一些编程语言.但是,关于正则表达式的部分非常小(例如,请参阅Java的页面),我认为您实际上无法从中学习正则表达式.我认为一个好的在线教程可能有助于解决我们在这里遇到的基本正则表达式问题.(也许在答案之后,我们可以建议他们看一下教程.)
那么,是否有一个良好的,在线的,交互式的正则表达式教程,与SQL教程一致?我简单地在线查看,但我能找到的只是非交互式教程或简单页面(尽管仍然有用!),它们可以让您将字符串与模式匹配,以便您可以看到它匹配/捕获/等等.
我最近换了几次计算机,在某个地方我丢失了我的.emacs.我正在尝试再次构建它,但是当我在它时,我想我会选择其他人使用的其他好的配置.
那么,如果你使用Emacs,你的 .emacs中有什么?
我现在非常贫瘠,仅包含:
(global-font-lock-mode 1)
你认为什么有用?
我可以假设给定
std::string str;
... // do something to str
Run Code Online (Sandbox Code Playgroud)
以下陈述是否总是如此?
(str.empty() == (str == ""))
Run Code Online (Sandbox Code Playgroud) 有时当我编程时,我发现某些特定的控制结构对我来说非常有用,但在我的编程语言中却无法直接使用.我认为我最常见的愿望是"分裂时"(我不知道该怎么称呼它):
{
foo();
} split_while( condition ) {
bar();
}
Run Code Online (Sandbox Code Playgroud)
此代码的语义将foo()
始终运行,然后检查条件.如果为true,则bar()
运行,然后返回第一个块(因此foo()
再次运行等).感谢reddit用户zxqdms的评论,我了解到Donald E. Knuth在他的论文"使用go to
语句进行结构化编程"(参见第279页)中写到了这种结构.
您认为哪些替代控制结构是组织计算的有用方法?
我的目标是为自己和他人提供构建代码的新方法,以改进分块和推理.
注意:我不是在询问如何概括所有可能的控制结构,无论是使用jne
,if
/ goto
,Lisp宏,continuation,monads,组合器,夸克还是其他任何东西.我问的是什么专业在描述代码时很有用.
我正在寻找Java的Collections框架中的LIFO结构(Stack)而没有任何成功.基本上我想要一个非常简单的堆栈; 我完美的选择是Deque,但我是Java 1.5.
我不想在我的结构中添加另一个类,但我想知道是否可能:
Collections框架(1.5)中是否有任何类可以完成这项工作?
如果没有,有没有办法在没有重新实现的情况下在LIFO队列(即堆栈)中转换队列?
如果没有,我应该为此任务扩展哪个接口或类?我想保持Sun公司与Deque的合作是一个良好的开端.
非常感谢.
编辑:我忘了谈论Stack类:当我看到它实现Vector类时,我对这个类有疑问,而Vector类有点过时了,不是吗?
我有一个重载的C++类,operator[]
数组下标/括号运算符.这在我班级以外非常方便,在那里我可以写foo[bar
].但是,当我在我的类中实现方法时,我无法弄清楚如何使用这种表示法.
我知道我可以写operator[](bar)
,this->operator[](bar)
但这些都相当笨重,并且首先会带走操作员的许多便利.(我也知道我可以只添加调用操作的新方法.)有没有一种方法我可以写this[bar]
或this->[bar]
或一些类似的好看?
注意:这个问题也可能适用于许多一元运算符(例如,我如何foo++
从课堂内调用?),但我个人只关心operator[]
.
编辑:我发布后很快意识到我可以使用(*this)[bar]
.到目前为止,所有答案都表明了这一点.还有其他选择吗?
正如你们许多人可能知道的那样,现在网上银行都有一个安全系统,在你输入密码之前,你会被问到一些个人问题.一旦您回答了它们,您就可以选择让银行"记住这台电脑",以便将来只需输入您的密码即可登录.
"记住这台电脑"部分如何运作?我知道它不能是cookie,因为尽管我清除了所有的cookie,但该功能仍然有效.我认为这可能是通过IP地址,但我的朋友有一个动态知识产权声称它也适用于他(但也许他错了).他认为这是MAC地址或其他什么,但我强烈怀疑!那么,是否有一个我不清楚的https-only cookie概念?
最后,问题的编程部分:我怎么能在PHP中自己做类似的事情呢?