我正在尝试使用matplotlib制作一个灰度非常小的散点图.由于点密度,点数需要很小.问题是scatter()函数的标记似乎同时具有直线和填充.当标记很小时,只有线条可见,而不是填充,线条不是正确的颜色(它总是黑色).
我可以使用gnuplot获得我想要的内容:使用点pt 0 lc rgb'gray'绘制'nodes'
如何使用matplotlib scatterplot()制作非常小的灰点?
我正在Haskell中实现一个组合优化算法:
Given an initial candidate solution, repeat until stopping criteria are met:
1. Determine possible moves
2. Evaluate possible moves
3. Choose a move
4. Make move, record new candidate solution, update search state
Run Code Online (Sandbox Code Playgroud)
我可以编写步骤1-4的函数,并在递归函数中将它们链接在一起,以处理循环并将状态从一次迭代传递到下一次迭代,但我有一个模糊的想法,即monads适用.
在Haskell中表达这种过程的最佳方法是什么?
所有线程共享相同的"全局随机数生成器",还是每个线程都有自己的?
如果共享一个,我如何确保线程安全?在Real World Haskell的"Monads"一章中描述的使用getStdGen和setStdGen的方法看起来并不安全.
如果每个线程都有一个独立的发生器,那么快速连续启动的两个线程的发生器会有不同的种子吗?(例如,如果种子是以秒为单位的时间,它们将不会,但毫秒可能没问题.我不知道如何从Data.Time获得毫秒分辨率的时间.)
我所谓的确定性程序会在不同的运行中产生一些略有不同的输出.输入,编译器和计算机是不变的.我不确定哪个输出是正确的,因为它看起来总是合理的.
除了对rand()的迷路调用之外,怎么可能呢?
我在优雅地使用Haskell的类型系统时遇到了麻烦.我确定我的问题很常见,但除了特定于我的程序的术语外,我不知道如何描述它.
我试图表达的概念是:
数据点,每个数据点采用多种形式之一,例如(id,个案数,控件数),(id,个案数,人口数)
数据点和集合信息的集合:(一组id,总案例,总控件),具有添加/删除点的功能(因此对于每种不同的点,都有相应的各种集合)
我可以有一类点类型,并将各种点定义为自己的类型.或者,我可以为每个品种提供一种点类型和不同的数据构造函数.同样对于点集.
我对每种方法都至少有一个问题:
使用类型类:避免函数名称冲突会很烦人.例如,两种类型的点都可以使用函数来提取"案例数",但类型类不能要求此函数,因为某些其他点类型可能没有案例.
没有类型类:我宁愿不从Point模块导出数据构造函数(提供其他更安全的函数来创建新值).如果没有数据构造函数,我将无法确定给定Point值的变化.
什么样的设计可以帮助减少这些(和其他)问题?
下面是我从维基百科文章中的伪代码编写的Dijkstra算法的实现.对于具有大约40 000个节点和80 000个边缘的图形,运行需要3或4分钟.那是不是正确的数量级?如果没有,我的实施有什么问题?
struct DijkstraVertex {
int index;
vector<int> adj;
vector<double> weights;
double dist;
int prev;
bool opt;
DijkstraVertex(int vertexIndex, vector<int> adjacentVertices, vector<double> edgeWeights) {
index = vertexIndex;
adj = adjacentVertices;
weights = edgeWeights;
dist = numeric_limits<double>::infinity();
prev = -1; // "undefined" node
opt = false; // unoptimized node
}
};
void dijsktra(vector<DijkstraVertex*> graph, int source, vector<double> &dist, vector<int> &prev) {
vector<DijkstraVertex*> Q(G); // set of unoptimized nodes
G[source]->dist = 0;
while (!Q.empty()) {
sort(Q.begin(), Q.end(), dijkstraDistComp); // …
Run Code Online (Sandbox Code Playgroud) 我有一组代表行政区的多边形.这些区域是手工数字化的,多边形应该接触的多边形之间有很小的空间.可能还有重叠的多边形.如何将多边形拼接在一起,填补间隙并消除重叠?
首选QGIS/ArcGIS或Python库解决方案(但欢迎使用算法建议)
当我从Emacs编译Latex时,如何防止打开*tex-shell*缓冲区?它将窗口分成两半,我总是只使用Cx 1来立即摆脱它.
解决方案可能与
(setq special-display-buffer-names ("*tex-shell*"))
Run Code Online (Sandbox Code Playgroud)
这使得新缓冲区占据整个帧而不是一半(不是我想要的).
我尝试了以下内容,但它对Latex没有影响:
(defadvice compilation-start
(around inhidbit-display (command &optional mode name-function highlight-regexp))
(flet (display-buffer) (fset 'display-buffer 'ignore) ad-do-it))
(ad-activate 'compilation-start)
(ad-deactivate 'compilation-start)
Run Code Online (Sandbox Code Playgroud) 我有一个连通的,无向图G =(V,E),一个集S = {S_1,S_2,...,S_n},其中每个S_i是V的子集,ak> 1.如何将V划分为k子集,以保证: