Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

354
Visualizações
Encuentra el rectángulo más grande que cabe dentro de un polígono

Necesito encontrar el rectángulo más grande que pueda caber dentro de cualquier polígono,

ingrese la descripción de la imagen aquí

lo que intenté es dividir el svg en la cuadrícula 2d y hacer un bucle en la matriz 2d para ver si la celda de la cuadrícula actual se cruza con el polígono para crear una nueva matriz binaria 2d donde la intersección es 1 más 0

ahora necesito encontrar el rectángulo más grande de esa matriz 2d Y, lo que es más importante, su ubicación

como ejemplo:

ingrese la descripción de la imagen aquí

si la matriz 2d es así, necesito encontrar el rect más grande en esa matriz y su x1, y1 (inicio i, j) y x2, y2 (final i, j).

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

bueno, puede forzar la ubicación por fuerza bruta y buscar el tamaño que será O(n^6) si n es el tamaño promedio del lado de su mapa en píxeles ...

La ubicación puede acelerarse mediante la búsqueda (aceptando datos no estrictamente ordenados), por ejemplo, así:

  • Cómo funciona la búsqueda de aproximación

lo que llevaría a ~O(n^4.log^2(n)) . Pero tenga cuidado, la búsqueda debe configurarse correctamente para no omitir la solución ... La búsqueda de tamaño también se puede mejorar utilizando una técnica similar a la que hice aquí:

  • OBB 2D

Simplemente use una métrica diferente para crear tablas LUT de posiciones de inicio y fin para cada x e y (4 tablas LUT) que acelerarán la búsqueda que conduce a ~O(n^2.log^2(n)) mientras se crea LUT es O(n^2) . por cierto, las mismas LUT que a veces uso en OCR como aquí (últimas 2 imágenes):

  • OCR y similitud de caracteres

Ahora, el problema con este enfoque es que no puede manejar el polígono cóncavo correctamente, ya que puede haber más bordes por x, y que solo 2. Entonces, para remediarlo, necesitaría tener más LUT y usarlos según la posición en el polígono (dividir el polígono para áreas "convexas")

Entonces, al juntar todo esto, se vería algo como esto:

 approx loop (center x) // ~O(log(n)) approx loop (center y) // ~O(log(n)) grow loop (square size to max using) LUT // O(n) { grow loop (x size to max while decreasing original square y size) // O(n) grow loop (y size to max while decreasing original square x size) // O(n) use bigger from the above 2 rectangles }

Simplemente no olvide usar el area of polygon / area of rectangle como valor de error de aproximación. Este algoritmo está dando como resultado ~O(n^2.log^2(n)) que no es muy bueno pero aún es factible.

Otra opción es convertir su polígono en cuadrados, y usar técnicas de empaquetamiento en contenedores o gráficos o retroceso para crecer hasta el rectángulo más grande ... pero esas no son mi taza de té, por lo que no tengo la confianza suficiente para crear una respuesta sobre ellos.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda