"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Gerenciando dados de streaming com pilhas mínimas e máximas em JavaScript: uma perspectiva de tecnologia de saúde para atletas digitais

Gerenciando dados de streaming com pilhas mínimas e máximas em JavaScript: uma perspectiva de tecnologia de saúde para atletas digitais

Publicado em 2024-11-06
Navegar:822

Managing Streaming Data with Min and Max Heaps in JavaScript: A Digital Athlete Health Tech Perspective

O gerenciamento de dados é crucial na tecnologia da saúde. Seja monitorando métricas de desempenho ou monitorando os tempos de recuperação dos atletas, a organização eficiente dos dados pode fazer uma diferença significativa na forma como os insights são obtidos. Uma ferramenta poderosa para gerenciar dados em tais cenários é o heap, especificamente os heaps mínimo e máximo. Nesta postagem, exploraremos como implementar e usar heaps mínimo e máximo em JavaScript, usando exemplos do mundo real relacionados ao gerenciamento de dados de atletas.

O que são pilhas?

Um heap é uma estrutura de dados especializada baseada em árvore binária que satisfaz a propriedade heap. Em um min heap, o nó pai é sempre menor ou igual a seus nós filhos. Por outro lado, em um max heap, o nó pai é sempre maior ou igual aos seus nós filhos. Isso torna os heaps particularmente úteis para recuperar com eficiência o valor mínimo ou máximo de um conjunto de dados.

Caso de uso de heap mínimo: acompanhamento dos tempos de recuperação

Imagine que você é um médico monitorando o tempo de recuperação dos atletas após um treino. Você deseja acompanhar o menor tempo de recuperação de forma eficiente para poder identificar rapidamente qual atleta se recuperou mais rapidamente.

Criando um heap mínimo

Em JavaScript, você pode criar um heap mínimo usando um array e gerenciá-lo com funções simples para manter a propriedade do heap:

class MinHeap {
    constructor() {
        this.heap = [];
    }

    getMin() {
        return this.heap[0];
    }

    insert(value) {
        this.heap.push(value);
        this.bubbleUp();
    }

    bubbleUp() {
        let index = this.heap.length - 1;
        while (index > 0) {
            let parentIndex = Math.floor((index - 1) / 2);
            if (this.heap[parentIndex] 



Usando o Min Heap para tempos de recuperação do atleta

Agora, vamos aplicar isso ao nosso cenário:

const recoveryTimes = new MinHeap();
recoveryTimes.insert(10); // Athlete A
recoveryTimes.insert(7);  // Athlete B
recoveryTimes.insert(12); // Athlete C

console.log("Fastest recovery time:", recoveryTimes.getMin()); // Outputs: 7

Aqui, o min heap permite que o médico identifique rapidamente o atleta com o tempo de recuperação mais rápido, o que é fundamental para a tomada de decisões em tempo real durante uma sessão de treinamento.

Caso de uso de Max Heap: monitoramento de métricas de desempenho máximo

Por outro lado, um heap máximo é ideal para cenários em que você precisa monitorar os valores mais altos, como monitorar métricas de desempenho máximo, como a frequência cardíaca máxima alcançada durante um treino intenso.

Criando um Heap máximo

Um heap máximo pode ser implementado de forma semelhante a um heap mínimo, com alguns ajustes:

class MaxHeap {
    constructor() {
        this.heap = [];
    }

    getMax() {
        return this.heap[0];
    }

    insert(value) {
        this.heap.push(value);
        this.bubbleUp();
    }

    bubbleUp() {
        let index = this.heap.length - 1;
        while (index > 0) {
            let parentIndex = Math.floor((index - 1) / 2);
            if (this.heap[parentIndex] >= this.heap[index]) break;
            [this.heap[parentIndex], this.heap[index]] = [this.heap[index], this.heap[parentIndex]];
            index = parentIndex;
        }
    }

    extractMax() {
        if (this.heap.length === 1) return this.heap.pop();
        const max = this.heap[0];
        this.heap[0] = this.heap.pop();
        this.bubbleDown();
        return max;
    }

    bubbleDown() {
        let index = 0;
        const length = this.heap.length;
        const element = this.heap[0];

        while (true) {
            let leftChildIndex = 2 * index   1;
            let rightChildIndex = 2 * index   2;
            let leftChild, rightChild;
            let swap = null;

            if (leftChildIndex  element) swap = leftChildIndex;
            }

            if (rightChildIndex  element) ||
                    (swap !== null && rightChild > leftChild)
                ) {
                    swap = rightChildIndex;
                }
            }

            if (swap === null) break;
            [this.heap[index], this.heap[swap]] = [this.heap[swap], this.heap[index]];
            index = swap;
        }
    }
}

Usando o Max Heap para pico de frequência cardíaca

Vamos considerar como um heap máximo pode ser usado para monitorar o pico da frequência cardíaca dos atletas durante um treino:

const heartRates = new MaxHeap();
heartRates.insert(150); // Athlete A
heartRates.insert(165); // Athlete B
heartRates.insert(160); // Athlete C

console.log("Peak heart rate:", heartRates.getMax()); // Outputs: 165

Aqui, o heap máximo garante que o médico possa identificar rapidamente o atleta que atingiu a frequência cardíaca mais alta, o que pode sinalizar que é necessária mais atenção ou resfriamento.

Outras operações básicas de heap

Além de inserir elementos e recuperar os valores mínimo ou máximo, os heaps suportam outras operações básicas, como:

  • Extraindo o mínimo/máximo: Isso remove a raiz do heap (o menor elemento em um heap mínimo ou o maior em um heap máximo) e reequilibra o heap.
  • Heapify: Convertendo um array arbitrário em um heap, garantindo que a propriedade heap seja mantida.
  • Peek: visualizar o valor mínimo ou máximo sem removê-lo da pilha.

Essas operações são essenciais para gerenciar e processar dados com eficiência em tempo real, tornando os heaps uma ferramenta valiosa em aplicações de tecnologia de saúde.

Simplificando operações de heap em Python e JavaScript

Em Python, o módulo heapq fornece uma maneira simples e eficiente de gerenciar min heaps usando listas. Aqui está um exemplo:

import heapq

# Create an empty list to represent the heap
recovery_times = []

# Add elements to the heap
heapq.heappush(recovery_times, 10)  # Athlete A
heapq.heappush(recovery_times, 7)   # Athlete B
heapq.heappush(recovery_times, 12)  # Athlete C

# Retrieve the smallest element (fastest recovery time)
fastest_recovery_time = heapq.heappop(recovery_times)
print(f"Fastest recovery time: {fastest_recovery_time}")  # Outputs: 7

Para JavaScript, embora não haja um módulo de heap integrado, você pode usar bibliotecas de terceiros como @datastructures-js/priority-queue para obter funcionalidade semelhante:

// First, you would need to install the @datastructures-js/priority-queue library using npm:
// npm install @datastructures-js/priority-queue

const { MinPriorityQueue } = require('@datastructures-js/priority-queue');

// Create a new min heap
const minHeap = new MinPriorityQueue();

// Add elements to the heap
minHeap.enqueue(10); // Athlete A
minHeap.enqueue(7);  // Athlete B
minHeap.enqueue(12); // Athlete C

// Retrieve the smallest element
const fastestRecoveryTime = minHeap.dequeue().element;
console.log("Fastest recovery time:", fastestRecoveryTime); // Outputs: 7

Ao aproveitar essas ferramentas, você pode se concentrar nos aspectos críticos da sua aplicação, como a análise de dados de atletas, sem se preocupar com os detalhes da implementação do heap.

Recuperando dados de forma eficiente em JavaScript

Heaps, especialmente heaps mínimos e máximos, são ferramentas poderosas para gerenciar e recuperar dados críticos de forma eficiente em JavaScript. Esteja você rastreando tempos de recuperação ou monitorando métricas de desempenho máximo, essas estruturas ajudam médicos e profissionais de tecnologia de saúde a tomar decisões informadas rapidamente. Ao compreender e implementar heaps, você pode garantir que os dados dos seus atletas estejam organizados, acessíveis e prontos para análise quando for mais importante.

Ao usar pilhas em seus aplicativos de tecnologia de saúde, você será capaz de lidar com dados de uma forma que ofereça melhores resultados para os atletas, fornecendo os insights necessários para otimizar o desempenho e a recuperação.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/adg29/managing-streaming-data-with-min-and-max-heaps-in-javascript-a-digital-athlete-health-tech-perspective-3d7g? 1, pois se houver alguma violação, entre em contato com [email protected] para excluí-la.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3