, который я не вижу, как можно использовать Гильбертову кривую в одном размере.
, Если Вы интересуетесь отображением точек к более низкому размеру при сохранении расстояний (с минимальной ошибкой) затем, можно изучить "Многомерное Масштабирование" алгоритмы.
Моделируемый отжиг является одним подходом.
Редактирование: Спасибо за комментарий. Я вижу то, что Вы подразумевали под Гильбертовым подходом Кривой теперь. Однако это - тяжелая проблема, и данный N=100 и 10 миллионов точек данных, я не думаю, что любой подход будет сохранять местность хорошо и работать за разумное количество времени. Я не думаю, что kd-деревья будут работать здесь.
При нахождении общего упорядочивания не важно для Вас, затем можно изучить находящееся на местности хеширование и другие приблизительные ближайшие соседние схемы. Иерархическое многомерное масштабирование с блоками точек для сокращения входного размера могло бы дать Вам хорошее упорядочивание, но снова это сомнительно в таком высоком размере.
Что в итоге сработало для меня, так это изменение этого:
#!/bin/sh
cd `dirname $0`
На это:
#! /bin/zsh
cd "${0:h}"
Это также поддерживает имена файлов и пути к файлам, содержащие пробелы. Вот где я его нашел: http://rentzsch.com/unix/locationAwareCommandFiles
А как насчет:
cd "$(dirname "$0")"
У меня это работает.
Экранирование внутренних двойных кавычек не требуется:
cd "`dirname "$0"`"
Но это не доходит до сути проблемы, которая заключается в том, что каким-то образом значение $ 0 кажется пустым или, возможно, чем-то странным. Попробуйте изменить выполнение сценария следующим образом:
bash -x scriptname
Это будет отображать каждую строку с интерполированными переменными перед ее запуском. Это очень полезно для отладки. Также весьма полезны:
-u: abort on attempt to use undefined variable
-e: abort on first error
Не уверен в этом... Но возможно ли, что ваш
#!/bin/sh
Указывает на что-то, что не является bash? Я обычно использую:
#!/usr/bin/bash
Я новичок во всех этих скриптах, поэтому не уверен.