Contexte
La mémoire externe, ou modèle DAM, définit le coût d'un algorithme par le nombre d'E / S qu'il exécute (essentiellement, le nombre d'échecs de cache). Ces temps d'exécution sont généralement donnés en termes de , la taille de la mémoire et , le nombre de mots qui peuvent être transférés en mémoire en même temps. Parfois, et sont utilisés pour et respectivement. B L Z B M
Par exemple, le tri nécessite un coût de et la multiplication de matrice naïve nécessite . Θ ( n 3 / B √
Ce modèle est utilisé pour analyser « les algorithmes de cache-inconscients », qui n'ont pas connaissance de ou . Généralement, l'objectif est que l'algorithme sans cache fonctionne de manière optimale dans le modèle de mémoire externe; ce n'est pas toujours possible, comme dans le problème de permutation par exemple (montré dans Brodal, Faderberg 2003 ). Voir cet article écrit par Erik Demaine pour une explication supplémentaire des algorithmes sans cache, y compris des discussions sur le tri et la multiplication de matrice.M
Nous pouvons voir que le changement de provoque un accélération logarithmique pour le tri et un accélération polynomiale pour la multiplication matricielle. (Ce résultat est originaire de Hong, Kung 1981 et est antérieur à la fois à l'oubli du cache et à la formalisation du modèle de mémoire externe).
Ma question est la suivante:
Y a-t-il un cas où l'accélération est exponentielle en ? Le temps d'exécution serait quelque chose comme . Je suis particulièrement intéressé par un algorithme ou une structure de données sans cache qui correspond à cette description, mais je serais heureux avec un algorithme / une structure de données sensible au cache ou même une borne inférieure la plus connue.f ( N , B ) / 2 O ( M )
On suppose généralement dans la plupart des modèles que la taille du mot si est la taille d'entrée et clairement . Ensuite , un gain de vitesse de donne un polynôme en speedup . Cela me fait croire que si le problème que je recherche existe, il n'est pas polynomial. (Sinon, nous pouvons changer la taille du cache par une constante pour obtenir un nombre constant d'E / S, ce qui semble peu probable).N M > w 2 M N
Réponses:
Je ne suis pas sûr d'avoir compris la question. Mais il me semble que dans l'hypothèse où contient des problèmes nécessitant un temps exponentiel, ces problèmes satisferaient vos exigences, car si M est O ( log N ), vous auriez besoin d'un nombre exponentiel d'opérations d'E / S ( puisque vous ne pouvez pas "rester" dans le même bloc mémoire de taille O ( log N ) plus qu'un nombre polynomial d'étapes sans entrer dans un cycle) et si M = NPSPACE M O(logN) O(logN) M=N vous n'auriez besoin que d'un nombre linéaire d'opérations d'E / S. De plus, concernant votre observation qu'un tel problème ne peut pas appartenir à , il est correct si l'accélération doit tenir pour des valeurs de M qui sont Ω ( N ) (car cela signifierait que nous avons un nombre exponentiel d'opérations). Mais si l'accélération ne s'applique qu'à des valeurs plus petites de M , je pense intuitivement que ce n'est pas vrai, car je pense qu'il devrait être possible de concevoir un problème qui est en fait la concaténation de petits problèmes de taille O ( log N ) nécessitant chacun une exponentielle temps dans sa propre taille, et un nombre exponentiel d'opérations d'E / S (c'est-à-dire, p oP M Ω ( N) M O ( logN) , puisque p o l y ( N ) est exponentielle en O ( log N ) ). Danspratiqueje crois P S P A C E problèmes COMPLETES tels que T Q B F remplir votre condition.p o l y( N) p o l y( N) O ( logN) PSPA CE TQ B F
la source
cette question semble virer vers la terra incognita, c'est-à-dire un territoire inexploré. après quelques réflexions et critiques, voici quelques réflexions / idées sur cette question apparemment très difficile / subtile qui, espérons-le, sera intelligente mais ne sont pas censées être définitives.
Demain qui vous citez écrit, "l'idée principale [des algorithmes de cache inconscients] est simple: concevoir des algorithmes de mémoire externe sans connaître et M. Mais cette idée simple a plusieurs conséquences étonnamment puissantes."B M
il semble également avoir des implications étonnamment subtiles. il semble difficile d'analyser ce modèle pour les comportements extrêmes et personne ne l'a fait jusqu'à présent. il y a quelques enquêtes et elles semblent pour l'instant étudier l'ensemble du domaine. ce n'est pas surprenant étant donné que le domaine n'a que ~ 1 décennie.
le modèle ne semble pas encore avoir été traduit sur les machines de Turing où une analyse plus stricte / formelle / théorique / générale / standard peut être possible. tout le concept de notation Big-Oh et ses implications et intuitions telles que la non-pertinence des constantes n'est pas nécessairement automatiquement transporté dans ce domaine des algorithmes inconscients du cache. par exemple, le modèle semble déjà fonctionner avec les constantes qui mesurent les tailles de mémoire exactes. il semble que le domaine ne dispose pas à ce jour d'un ensemble d'axiomes de base de sa dynamique.B , M
Les MT ont été inventés en 1936 par Turing et les théorèmes de la hiérarchie temps / espace de Hartmanis-Stearns (auxquels vous faites un peu allusion dans cette question) ont été découverts en 1965. C'est une remarquable ~ 3 décennies pourtant les théorèmes de la hiérarchie temps / espace sont maintenant considérés quelque peu élémentaire et enseigné dans les classes de premier cycle. il ne semble pas encore y avoir de théorèmes de hiérarchie correspondants établis dans ce modèle, et comment le faire n'est pas un problème trivial. ce modèle semble en fait avoir plus de "pièces mobiles" que la machine Turing standard (qui a déjà une dynamique assez diaboliquement complexe), c'est-à-dire comme une machine Turing augmentée.
une autre idée est de convertir ce modèle de mémoire externe en MT d'une manière ou d'une autre, ce qui ne semble pas apparaître à nouveau dans la littérature / les enquêtes sur les algorithmes inconscients du cache, et peut-être voir comment les théorèmes de la hiérarchie Hartmanis-Stearns pourraient se traduire. il semble se rapporter à une TM à deux bandes où une bande est de taille «M» et l'autre bande est infinie, et les blocs sont transférés vers «M» dans les tailles de «B». mais aussi, une difficulté ici est qu'il s'agit davantage d'un modèle RAM que du modèle Turing qui utilise un accès séquentiel à la bande. d'autre part, cela pourrait se heurter à des subtilités associées à des conversions entre des MT simples et multitapes .
suggèrent d'attaquer ce problème de manière empirique avec des simulations, ce sur quoi la littérature a tendance à se concentrer, par exemple, comme dans cette grande enquête de Kumar sur Cache algorithmes inconscients (2003). il existe de nombreux programmes et articles en ligne pour les simulations de cache et on pourrait éventuellement répondre à votre question sans une grande quantité de code, en utilisant quelques simplifications. une idée de base est de créer des algorithmes probabilistes qui accèdent aux zones de mémoire "proches" en fonction des probabilités. «à proximité» ici n'est pas nécessairement une mémoire contiguë, mais plutôt un algorithme qui sélectionne des pages de mémoire aléatoires (blocs) en fonction du suivi de ses propres pages les plus récemment consultées. suggérer d'utiliser des lois de puissancepour déterminer la probabilité de sélectionner des pages "proches" dans la liste "les plus récemment consultées". cela semble être l'aspect clé auquel les améliorations des performances basées sur le cache sont liées.
Voici un argument grossier basé sur «M» qui est fondamentalement une mesure de la «mémoire centrale» par rapport à la mémoire du disque. pour un algorithme, on s'attendrait à ce que la mémoire centrale augmente, on ne se rapproche [asymptotiquement] que d'une amélioration linéaire de la vitesse algorithmique, et l'ajout de "mémoire centrale" pour obtenir une augmentation super-linéaire de la vitesse de l'algorithme semble intuitivement presque comme dépasser la vitesse limite et "obtenir quelque chose pour rien". cependant, ne saisissez pas assez bien le modèle pour le prouver [mais apparemment personne d'autre non plus, y compris les autorités / fondateurs / experts].
cette littérature sur les algorithmes sans cache s'est concentrée sur les algorithmes P et n'a vu aucun cas d'analyse d'un algorithme non-P jusqu'à présent et peut-être aucun n'existe. cela pourrait être dû au fait que l'analyse est trop difficile! dans ce cas, les questions sur les comportements extrêmes peuvent rester sans réponse dans ce domaine à long terme.
il ne semble même pas intuitivement clair, ou peut-être encore du tout étudié, comment les "petits" algorithmes de complexité tels que dans L, ou les "gros" algorithmes tels que non-P (par exemple Expspace, etc.) se comportent dans ce modèle. le modèle mesure la localité de la mémoire, qui semble être fondamentalement différente, mais entrelacée avec les hiérarchies temporelles et spatiales.
il existe une mesure quelque peu obscure de la complexité de la machine de Turing appelée «complexité d'inversion» avec quelques études, résultats et articles qui pourraient être liés. Fondamentalement, le TM peut couvrir une certaine quantité de temps et d'espace, mais les inversions sont une mesure quelque peu indépendante de la tête de bande pendant le calcul. il semble que les «inversions élevées» pourraient être liées à la «localité à mémoire élevée» car dans les deux cas, la tête de bande a tendance à rester dans une région «plus petite» par rapport à se déplacer dans des régions plus grandes.
cette question et ce modèle me rappellent la loi d'Amdahls et soupçonnent qu'une sorte de loi similaire, encore inconnue, relative à la baisse des rendements ou des soldes / compromis pourrait être valable ou applicable dans ce domaine. raisonnement approximatif: la théorie des algorithmes inconscients du cache examine un équilibre / compromis entre une mémoire finie "locale" et un disque externe "infini" basé sur les coûts. il s'agit essentiellement de deux ressources qui se comportent "en parallèle" et il existe probablement une sorte de compromis optimal entre elles.
la source