「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > JavaScript での最小ヒープと最大ヒープによるストリーミング データの管理: デジタル アスリートのヘルステクノロジーの視点

JavaScript での最小ヒープと最大ヒープによるストリーミング データの管理: デジタル アスリートのヘルステクノロジーの視点

2024 年 11 月 6 日に公開
ブラウズ:697

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

データ管理はヘルステクノロジーにおいて非常に重要です。パフォーマンス指標を追跡する場合でも、アスリートの回復時間を監視する場合でも、データを効率的に整理することで、洞察を得る方法に大きな違いが生まれます。このようなシナリオでデータを管理するための強力なツールの 1 つはヒープ、特に最小ヒープと最大ヒープです。この投稿では、アスリートのデータ管理に関連する実際の例を使用して、JavaScript で最小ヒープと最大ヒープを実装および使用する方法を検討します。

ヒープとは何ですか?

ヒープは、ヒープ プロパティを満たす特殊なバイナリ ツリー ベースのデータ構造です。 min heap では、親ノードは常にその子ノード以下になります。逆に、max heap では、親ノードは常にその子ノード以上になります。これにより、ヒープは、データセットから最小値または最大値を効率的に取得するのに特に役立ちます。

最小ヒープの使用例: 回復時間の追跡

あなたは、トレーニング後のアスリートの回復時間を追跡する臨床医であると想像してください。どのアスリートが最も早く回復したかをすぐに特定できるように、最短の回復時間を効率的に追跡したいと考えています。

最小ヒープの作成

JavaScript では、配列を使用して最小ヒープを作成し、単純な関数でそれを管理してヒープ プロパティを維持できます。

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] 



アスリートの回復時間に最小ヒープを使用する

さて、これをシナリオに適用しましょう:

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

ここで、最小ヒープにより、臨床医は回復時間が最も速いアスリートを素早く特定できます。これは、トレーニング セッション中にリアルタイムで意思決定を行うために重要です。

最大ヒープの使用例: ピーク パフォーマンス メトリクスの監視

一方、最大ヒープは、激しいワークアウト中に到達した最大心拍数などのピーク パフォーマンス指標を監視するなど、最高値を追跡する必要があるシナリオに最適です。

最大ヒープの作成

最大ヒープは、いくつかの調整を加えて、最小ヒープと同様に実装できます。

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;
        }
    }
}

最大ヒープを使用してピーク心拍数を実現する

ワークアウト中のアスリートのピーク心拍数を追跡するために最大ヒープをどのように使用できるかを考えてみましょう:

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

ここでは、最大ヒープにより、臨床医が最高心拍数に達したアスリートをすぐに特定できるようになり、さらなる注意やクールダウンが必要であることを示す可能性があります。

その他の基本的なヒープ操作

要素の挿入や最小値または最大値の取得に加えて、ヒープは次のような他の基本的な操作をサポートします。

  • 最小/最大の抽出: これにより、ヒープのルート (最小ヒープ内の最小要素または最大ヒープ内の最大要素) が削除され、ヒープのバランスが再調整されます。
  • Heapify: ヒープのプロパティが維持されるように、任意の配列をヒープに変換します。
  • ピーク: ヒープから削除せずに最小値または最大値を表示します。

これらの操作は、データをリアルタイムで効率的に管理および処理するために不可欠であり、ヒープを医療技術アプリケーションで貴重なツールにします。

Python と JavaScript でのヒープ操作の簡素化

Python では、heapq モジュールは、リストを使用して最小ヒープを管理するシンプルかつ効率的な方法を提供します。以下に例を示します:

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

JavaScript の場合、組み込みのヒープ モジュールはありませんが、@data Structures-js/priority-queue などのサードパーティ ライブラリを使用して同様の機能を実現できます。

// 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

これらのツールを活用することで、ヒープ実装の詳細に囚われることなく、アスリート データの分析など、アプリケーションの重要な側面に集中できます。

JavaScript でデータを効率的に取得する

ヒープ、特に最小ヒープと最大ヒープは、JavaScript で重要なデータを効率的に管理および取得するための強力なツールです。回復時間を追跡する場合でも、ピークパフォーマンス指標を監視する場合でも、これらの構造は、臨床医や医療技術専門家が情報に基づいた意思決定を迅速に行うのに役立ちます。ヒープを理解して実装することで、アスリートのデータが整理され、アクセス可能になり、最も重要なときにすぐに分析できるようになります。

ヘルステック アプリケーションでヒープを使用すると、アスリートのより良い結果をサポートする方法でデータを処理できるようになり、パフォーマンスと回復を最適化するために必要な洞察が得られます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/adg29/managing-streaming-data-with-min-and-max-heaps-in-javascript-a-digital-athlete-health-tech-perspective-3d7g? 1 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>
  • InnerHTML の落とし穴を回避して HTML をコンテナ要素に追加するにはどうすればよいですか?
    InnerHTML の落とし穴を回避して HTML をコンテナ要素に追加するにはどうすればよいですか?
    innerHTML を使用しないコンテナ要素への HTML の追加再訪当面の問題は、制限を回避しながら HTML をコンテナ要素に追加する方法です。 innerHTML プロパティを使用する場合の落とし穴。 OP が正しく指摘しているように、innerHTML は既存のコンテンツを置き換える動作によ...
    プログラミング 2024 年 11 月 6 日に公開
  • 継続的テスト: DevOps パイプラインの品質を確保する
    継続的テスト: DevOps パイプラインの品質を確保する
    継続的なテストは、最新のソフトウェア開発、特に DevOps フレームワーク内での重要な実践です。これには、コードベースに加えられたすべての変更が完全に検証されていることを確認するために、ソフトウェア配信パイプライン全体でのテストの自動実行が含まれます。開発プロセスのすべての段階にテストを統合する...
    プログラミング 2024 年 11 月 6 日に公開
  • 背景色の変更動画
    背景色の変更動画
    インスタグラムをフォローしてください このビデオチュートリアルでは、HTML、CSS、JavaScript を使用して素晴らしい Instagram カードを作成する方法を説明します。このカードには、色が変化する鮮やかな境界線、円形のプロフィール写真、およびオンラインでの存在感に魅力的なタッチを加え...
    プログラミング 2024 年 11 月 6 日に公開
  • PHPを使用してブラウザのキャッシュをクリアするにはどうすればよいですか?
    PHPを使用してブラウザのキャッシュをクリアするにはどうすればよいですか?
    PHP を使用したブラウザ キャッシュのクリアブラウザ キャッシュにより、頻繁にアクセスされるファイルがローカルに保存され、Web サイトの読み込み時間が短縮されます。ただし、キャッシュされたファイルが古い場合は、テストや開発に支障をきたす可能性もあります。この記事では、PHP を使用してブラウザの...
    プログラミング 2024 年 11 月 6 日に公開
  • Go を使用した AWS Lambda、初期定型文
    Go を使用した AWS Lambda、初期定型文
    Unsplash の Lukáš Vaňátko による写真 導入 Go はそのシンプルさから、常に私のお気に入りの言語の 1 つです。最近、Go で書かれたラムダ関数を使用した単純な定型的なサーバーレス プロジェクトを作成するには何が必要かを理解することにしました。ツールと開発者の...
    プログラミング 2024 年 11 月 6 日に公開
  • Laravelで空の値が一番下にあり空でない値がある行を降順で並べ替える
    Laravelで空の値が一番下にあり空でない値がある行を降順で並べ替える
    データベースを操作する場合、一部のフィールドが空または NULL になる状況がよく発生します。よく発生する課題の 1 つは、空のフィールドを含む行が結果セットの最後に表示され、空ではない値を含む行が意味のある方法 (降順など) で並べられるようにレコードを並べ替える方法です。この投稿では、実用的な例...
    プログラミング 2024 年 11 月 6 日に公開
  • オリーブオイルの利点
    オリーブオイルの利点
    オリーブオイルの利点 地中海食の基礎としてよく称賛されるオリーブオイルは、さまざまな料理に風味を加えるだけでなく、健康上の利点も満載です。オリーブの木の果実から抽出されるオリーブオイルは何世紀にもわたって使用されており、現代の研究によりその多くの利点が明らかになり続けています。オリ...
    プログラミング 2024 年 11 月 6 日に公開
  • JSON Diff: 開発者向けの完全ガイド
    JSON Diff: 開発者向けの完全ガイド
    JSON (JavaScript Object Notation) は、システム間で情報を交換するために広く使用されているデータ形式です。開発者が API、データベース、構成を操作する場合、JSON データの一貫性と正確性を確保することが不可欠です。ここで JSON diff が役に立ちます。 J...
    プログラミング 2024 年 11 月 6 日に公開
  • 知っておくべき avascript のヒント
    知っておくべき avascript のヒント
    ジョアブ・チュア著 1. コンソール.ログ コンソール ログに色を追加 これだけはやめてください! ❌ 代わりにこれを試してください。 ✅ しかし、オブジェクトの配列がある場合は、これを試してみるとさらに良いでしょう ? コード内で特定の操作がどのくらい速く実行されるかを測定したい場...
    プログラミング 2024 年 11 月 6 日に公開
  • Python を使用して Google Scholar をスクレイピングする技術を習得する
    Python を使用して Google Scholar をスクレイピングする技術を習得する
    学術研究やデータ分析に取り組んでいる場合、Google Scholar のデータが必要になる場合があります。残念ながら、公式の Google Scholar API Python サポートがないため、このデータの抽出は少し難しくなります。ただし、適切なツールと知識があれば、Google Schola...
    プログラミング 2024 年 11 月 6 日に公開
  • Go、クリーン アーキテクチャ、PostgreSQL による堅牢な電子商取引プラットフォームの構築
    Go、クリーン アーキテクチャ、PostgreSQL による堅牢な電子商取引プラットフォームの構築
    概要 私たちの目標は、商品管理から注文処理まですべてを処理できる総合的な電子商取引ソリューションを開発することです。このプラットフォームは、オンライン ビジネスの強固な基盤として機能し、需要の増大に合わせて拡張し、市場のニーズの変化に適応することができます。 当社の e コマース ...
    プログラミング 2024 年 11 月 6 日に公開
  • Redis の説明: 主な機能、使用例、実践的なプロジェクト
    Redis の説明: 主な機能、使用例、実践的なプロジェクト
    Introduction Redis is an open-source, in-memory data structure store used as a database, cache, and message broker. It’s known for its perfor...
    プログラミング 2024 年 11 月 6 日に公開
  • macOS で MySQL を自動起動するように設定する方法: 開発者向けのステップバイステップ ガイド
    macOS で MySQL を自動起動するように設定する方法: 開発者向けのステップバイステップ ガイド
    開発者として、私たちはローカル マシン上で MySQL データベースを操作することがよくあります。システムを起動するたびに MySQL を手動で起動するのは管理可能ですが、面倒な作業になる可能性があります。このガイドでは、macOS 上で MySQL が自動的に起動するように設定し、時間を節約し、ワ...
    プログラミング 2024 年 11 月 6 日に公開
  • TypeScript をマスターする: extends の力を理解する
    TypeScript をマスターする: extends の力を理解する
    TypeScript の extends キーワードは、一種のスイス アーミー ナイフです。これは、継承、ジェネリック、条件型などの複数のコンテキストで使用されます。 extends を効果的に使用する方法を理解すると、より堅牢で再利用可能でタ​​イプセーフなコードを作成できます。 ...
    プログラミング 2024 年 11 月 6 日に公開
  • Pandas でグループ化されたデータフレームにグループ数を含む列を追加する方法
    Pandas でグループ化されたデータフレームにグループ数を含む列を追加する方法
    Pandas でグループ化されたデータフレームに列を追加する方法データ分析では、多くの場合、データをグループ化し、計算を実行する必要があります。各グループ。 Pandas は、groupby 関数を通じてこれを行う便利な方法を提供します。一般的なタスクの 1 つは、各グループ内の列の値をカウントし、...
    プログラミング 2024 年 11 月 6 日に公開

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3