二維平面無中心點的聚類算法

問題描述

二維平面上有許多點p(x , y),按照彼此之間的歐式距離進行分為若干個集合。若點p1(x1, y1)與點p(x2, y2)之間距離小于d,則認為二者是鄰居。

算法思路

給數據集的點進行編號,順序遍歷這些點,找出當前點的鄰居,記住已經遍歷過的點,直到遍歷完數據集

代碼實現

import java.util.ArrayList;
import java.util.List;import static java.awt.geom.Point2D.distance;public class Leetcode {// 聚類算法,列表a是節點列表,d是每個集合內任意兩點的最短距離public static List<List> spe(List<Node> a, int d) {List<List> r = new ArrayList<>();boolean[] visited = new boolean[a.size()];if (a.size() == 0) return r;for (int i = 0; i < a.size(); i++) {if (visited[a.get(i).index] == false)dfs(a, i, r, visited, new ArrayList<>(), d);}return r;}static void dfs(List<Node> a, int i, List<List> r, boolean[] visited, List<Node> cur, int d) {Node current = a.get(i);cur.add(current);visited[current.index] = true;boolean hasNeighbor = false;for (int j = 0; j < a.size(); j++) {if (j != i && visited[a.get(j).index] == false && distance(current.x, current.y, a.get(j).x, a.get(j).y) <= d) {hasNeighbor = true;dfs(a, j, r, visited, cur, d);}}if (hasNeighbor == false) {r.add(new ArrayList(cur));}}static class Node {double x;   // x坐標double y;    // y坐標int index;   // 在數據集的編號public Node(double[] x, int index) {this.x = x[0];this.y = x[1];this.index = index;}}public static void main(String[] args) {double[] point1 = {1.0, 2.0};double[] point2 = {2.0, 3.0};Node node1 = new Node(point1, 0);Node node2 = new Node(point2, 1);double[] point3 = {11.0, 22.0};double[] point4 = {14.0, 22.0};Node node3 = new Node(point3, 2);Node node4 = new Node(point4, 3);List<Node> t = new ArrayList<>();t.add(node1);t.add(node2);t.add(node3);t.add(node4);List<List> r = spe(t, 10);System.out.println(r);}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/40204.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40204.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40204.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

模具監視器的選擇要點介紹

模具監視器的選擇要點涉及多個方面&#xff0c;以確保其能夠滿足實際生產需求并提高生產效率。以下是一些關鍵的選擇要點&#xff1a; 一、性能和穩定性 監控精度&#xff1a;選擇模具監視器時&#xff0c;首先要考慮其監控精度&#xff0c;包括溫度、壓力、注射速度等參數的…

Debezium系列之:JVM參數詳解和Debezium集群JVM監控看板制作

Debezium系列之:JVM參數詳解和Debezium集群JVM監控看板制作 一、JVM參數詳解1.jvm_memory_bytes_used2.jvm_memory_bytes_committed3.jvm_memory_bytes_max4.jvm_memory_bytes_init5.jvm_memory_pool_bytes_used6.jvm_memory_pool_bytes_committed7.jvm_memory_pool_bytes_max…

金屬3D打印如何精準選材

隨著3D打印技術的飛躍發展&#xff0c;模具制造領域迎來了前所未有的創新機遇。在眾多3D打印技術中&#xff0c;SLM金屬3D打印以其精度高、復雜結構成型能力&#xff0c;成為眾多行業的優選。然而&#xff0c;金屬打印材料&#xff0c;如何精準選擇&#xff0c;以最大化滿足項目…

linux 內核打印log太多咋辦?

有時候發現&#xff0c;linux 內核打印太多消息了&#xff0c;對有用消息造成了干擾&#xff0c;如果你一個個源文件去關閉打印太麻煩了&#xff0c;有沒有一種更方便的方式來關閉這些消息呢&#xff1f; 對這個需求&#xff0c;內核提供了一個強大而又靈活的方式&#xff0c;…

開源 WAF 解析:選擇最適合你的防護利器

前言 隨著網絡安全風險的增加&#xff0c;Web 應用防火墻&#xff08;WAF&#xff09;成為保護網站和應用程序免受攻擊的關鍵工具。在眾多的選擇中&#xff0c;開源 WAF 以其靈活性、可定制性和成本效益備受青睞。本文將深入探討幾種主流開源 WAF 解決方案&#xff0c;幫助你選…

用html+css設計一個列表清單小卡片

目錄 簡介: 效果圖: 源代碼: 可能的問題: 簡介: 這個HTML代碼片段是一個簡單的列表清單設計。它包含一個卡片元素(class為"card"),內部包含一個無序列表(ul),列表項(li)前面有一個特殊的符號(△)。整個卡片元素設計成300px寬,150px高,具有圓角邊…

從0-1配置一個ROS項目

目標&#xff1a;從0-1配置一個ROS項目&#xff0c;實現hello,world打印&#xff0c;在此基礎上進行功能開發。 步驟1&#xff1a;創建工作空間&#xff1a; mkdir -p ros_workspace/src cd ros_workspace對工作空間進行初始化&#xff1a; catkin_make source devel/setup.…

20.【C語言】初識結構體(重要)

定義&#xff1a;由一批數據組合而成的結構型數據 作用&#xff1a;描述復雜對象&#xff0c;創建新的類型 格式&#xff1a; struct 對象 { …… } 介紹. 用法&#xff1a;結構體變量.成員變量 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> struct hotal…

代碼隨想錄訓練營Day57

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、X的平方根二、有效的完全平方數 前言 提示&#xff1a;這里可以添加本文要記錄的大概內容&#xff1a; 今天是跟著代碼隨想錄刷題的第57天&#xff0c;繼…

Prompt-Free Diffusion: Taking “Text” out of Text-to-Image Diffusion Models

CVPR2024 SHI Labshttps://arxiv.org/pdf/2305.16223https://github.com/SHI-Labs/Prompt-Free-Diffusion 問題引入 在SD模型的基礎之上&#xff0c;去掉text prompt&#xff0c;使用reference image作為生成圖片語義的指導&#xff0c;optional structure image作為生成圖片…

安裝Linux虛擬機

點擊創建新的虛擬機 選擇高級 系統自定義推薦 選擇稍后安裝 選擇Linux 虛擬機命名并且選擇創建位置 系統自定義 系統自定義推薦 系統自定義推薦 選擇安裝好的iOS文件 點擊完成 選擇編輯虛擬機設置 進入后選擇第一個Install red hat enterprise 選擇常用語言 設置…

2024.8月28號杭州電商博覽會,在杭州國博舉辦

2024杭州電商新渠道博覽會暨集脈電商節 時間&#xff1a;2024年08月28-30日 地點&#xff1a;杭州國際博覽中心&#xff08;G20&#xff09; 主辦單位&#xff1a;浙江集脈展覽有限公司、杭州華維展覽有限公司 承辦單位&#xff1a;浙江集脈展覽有限公司 報名參展&#xf…

測試幾個 ocr 對日語的識別情況

測試幾個 ocr 對日語的識別情況 1. EasyOCR2. PaddleOCR3. Deepdoc&#xff08;識別pdf中圖片&#xff09;4. Deepdoc&#xff08;識別pdf中文字&#xff09;5. Nvidia neva-22b6. Claude 3.5 sonnet 識別圖片中的文字7. Claude 3.5 sonnet 識別 pdf 中表格8. OpenAI gpt-4o 識…

網頁計算器的實現

簡介 該項目實現了一個功能完備、交互友好的網頁計算器應用。只使用了 HTML、CSS 和 JavaScript &#xff0c;用于檢驗web前端基礎水平。 開發環境&#xff1a;Visual Studio Code開發工具&#xff1a;HTML5、CSS3、JavaScript實現效果 功能設計和模塊劃分 顯示模塊&#…

Bean類的設計規范:Bean規范

Bean規范 類要求必須含有無參&#xff0c;公共的構造方法屬性必須私有化&#xff0c;然后提供公共的 set 和 get 方法

anaconda命令大全

目錄 查看所有虛擬環境查看某虛擬環境安裝的包創建虛擬環境激活創建好的虛擬環境回到之前的環境刪除創建的虛擬環境查看conda所在的位置、虛擬環境位置等信息conda修改虛擬環境所在的位置 查看所有虛擬環境 conda env list查看某虛擬環境安裝的包 激活要查看的虛擬環境之后&a…

Android 性能優化之啟動優化

文章目錄 Android 性能優化之啟動優化啟動狀態冷啟動溫啟動熱啟動 耗時檢測檢測手段TraceView使用方式缺點 Systrace環境配置使用方式TraceView和Systrace比較 AOP統計耗時環境配置使用 優化白屏優化異步加載優化環境配置使用 延遲加載優化AppStartup 源碼下載 Android 性能優化…

Reid系列論文學習——無人機場景下基于 Transformer 的輕量化行人重識別

今天介紹的一篇論文是針對無人機場景下的行人重識別&#xff0c;論文題目為&#xff1a;"無人機場景下基于 Transformer 的輕量化行人重識別"。該論文針對無人機場景下行人呈現多角度多尺度的特點、以及傳統CNN網絡在行人重識別任務中受限于感受野和下采樣導致的無法…

力扣1895.最大的幻方

力扣1895.最大的幻方 求前綴和暴力枚舉幻方邊長 求行列前綴和 class Solution {public:int largestMagicSquare(vector<vector<int>>& grid) {int n grid.size() , m grid[0].size();vector<vector<int>> rowsum(n,vector<int>(m));for…

關于汽車軟件測試的幾點想法

如果你有過汽車行業的從業經驗&#xff0c;你就應該知道&#xff0c;過去汽車行業只做測試&#xff0c;而不做開發。汽車制造商的主要任務&#xff08;從工程角度看&#xff09;是將來自數百家供應商的數千個零部件組裝在一起。考慮到現代軟件的復雜性和客戶的“挑剔”&#xf…