運籌系列60 TSP問題資料

2021-10-12 07:27:17 字數 1372 閱讀 9691

從只有29個城市的西撒哈拉,到71009個城市的中國,位址為下面這個頁面是25個城市的例子:最優解的清單見

見這個問題一共有1,904,711個城市,注意位置使用的是經緯度,距離使用tsplib geo-norm方法計算。目前最佳的解是7,515,755,956,由keld helsgaun於2023年2月15日計算得到。目前的lower bound是2023年6月5日由concorde軟體獲得7,512,218,268.,gap僅為0.0471%。

下面是monalisa問題的創造方法:

將灰度先轉為離散圖,然後將離散圖用一筆畫畫出來。這裡是建立離散圖的乙個python**:

轉為離散點的方法,使用的是weighted voronoi stippling方法,參考這篇**:

這裡有乙個重要的概念:抖動(dithering)。比如下圖,實際只用了紅藍兩種顏色,但是隨著畫素的變小,逐漸呈現出紫色。dithering是一種用隨機誤差來緩解系統誤差的方式。

thresholding是將灰度圖抖動為黑白圖的最簡單方法,用閾值進行畫素的四捨五入。這種方法由於邊界清晰,會產生明顯的鋸齒和色帶問題。

grid distribution計算每乙個grid中的平均灰度,以此為概率,對每個畫素點進行取樣。本質上是用grid代替畫素來模擬灰度,讓顯示更自然。

floyd-steinberg dithering可以大幅降低需要的點數,這個方法使用如下的error diffusion method迭代進行thresholding:

當然還有很多其他的error diffusion method,下面是效果圖:

weighted voronoi stippling通過類似聚類的方式,讓散點看起來更加「organized」。從標準網格或者隨機分布點或者按照啟發式規則生成的散點開始,計算voronoi圖,然後不斷將各個塊的中心點移動到質心(用頂點計算即可),接著重複計算voronoi圖、移動質心……;一般15次左右就可以收斂了。

ORACLE 14資料庫系列問題

卡在安裝程式第一步 解決 共享裡新增c盤共享,配置讀寫許可權 程序oracle listener無法關閉開啟 解決 listener.ora中將localhost換成本計算機名 ora 12514 無監聽 我的原因 可能是同時安裝12c和10c原因 解決 本地資料庫名字前面帶localhost 應該...

資料結構入門系列 用棧解決實際問題(2)

void duizhan int num int j cout 要將num轉為哪種進製 endl cin j switch j while stackempty st cout endl break case16 while num while stackempty st cout endl bre...

C 資料結構與演算法系列(十三) 遞迴 迷宮問題

初始化地圖 n for int i 0 i map.length i system.console.writeline setway map,1,1 system.console.writeline n小球走過,並標識過的地圖情況 n for int i 0 i map.length i syste...